在DSP启动EMIFA的CS4片选来进行通信出现问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4436|回复: 3
打印 上一主题 下一主题

[已解决] 在DSP启动EMIFA的CS4片选来进行通信出现问题?

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-5-30 11:10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
端午节快乐,请教个问题,ARM端启动linux,DSP端sysbios,我在DSP端初始化了EMIF,使用的是CS4,初始化参考了创龙的DSP单核时初始化的过程,单核下是可以使用CS4进行读写数据的,但是当双核启动的时候,就不能启动了读写数据了,然后我就用创龙的syslink案例ad7606_dsp,我用创龙的开发板和创龙的ad7606开发板进行AD模数转换,是可以的,那么我什么都没有改,只是将ad7606_dsp中的EMFI初始化部分,将CS2改为CS4,包括以下内容:static void ad7606_emifa_init(ad7606 *ad) {
7 z6 |0 {. j9 i- Z6 n4 X# p        /* Power on the EMIFA */
. H" K, w' v  V1 H& z        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
3 b! i# k( W7 V3 I$ e4 `8 L                        PSC_MDCTL_NEXT_ENABLE);) ^$ Q9 c+ N; z" K& N+ b
5 A$ m( B) N- f6 z; d# \; D
        /*selects the EMIFA pins for use*/8 {0 k/ K9 ]# q- n# Q' Q3 {  G
        EMIFAPinMuxSetup();2 {2 Y# S( b, W

0 \' d" K# \* [* r. h& K        /*set the buswidth of async device connected.  16bit*/
# j/ \, _3 u  i# x; o        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
" |& c! y  G& H7 V- ]/ E% M( ~9 b# f                                        EMIFA_DATA_BUSWITTH_16BIT);
5 C6 L# M2 c/ m) h. y. ^. ^( m* q3 c" e# D+ C$ C
        /*selects the aync interface opmode. :Normal Mode*/
) d2 c, @' \2 \2 V/ f4 B# ~        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
3 G. O! q' s1 q- e- ]  e' ?        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
- V$ e8 Y( e& n0 {; t/ T0 d
3 ?, t9 Y4 ~+ a$ U: f! P$ J        /*Extended Wait disable.*/% K/ b& J% y* B! r( c) a
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4," [9 T# s! D5 d/ F0 O3 i
        EMIFA_EXTENDED_WAIT_DISABLE);
2 A1 e$ J- K, i  w5 X
+ {5 c. ?% f$ e: t        /*configures the wait timing for the device interfaced on CS2; V2 Q" }. P4 L2 |) z4 i
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
2 |/ i4 E5 X. r) _- p+ w, F        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
. V- v' w- [' `4 D$ k* {                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));7 f8 ?/ ]- v0 |- U4 Y- ]2 G! U& I0 \; u

: c( {3 _- P5 d0 Y. I}
! \" ^. M0 q* @; l7 Q2 y还有cs4引脚的复用:
4 {0 ]* S/ ?8 O( U4 [% JSYSCFG_PINMUX7_PINMUX7_11_8" l) V1 Q2 L8 \6 e' r# C7 P

. i, L. h4 B+ K9 R2 s最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?& G( A9 i% F2 J# \- }3 u
谢谢!+ d- |) C( R0 \: x9 w! x

; V3 ^# m: _- l/ T
. w- |! Y. g% @2 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
# u6 {/ f1 f/ i% b#if defined(CONFIG_SERIAL_8250_EXTENDED)4 y1 C2 P) W5 k9 p
#define TL16754_CLK                14745600) m2 l/ T9 h$ P; U! L/ m
#define TL16754_PORT_N                8
8 ~2 n% t. _9 l3 E2 Z4 [7 W......
) d! e( |; B. T1 Z1 x% a* Nstatic struct plat_serial8250_port tl16754_serial_pdata[] = {
( H+ a0 [4 ~* `        [0 ... TL16754_PORT_N - 1] = {
$ c# k+ |1 q5 k% ?% m                .mapbase        = DA8XX_AEMIF_CS4_BASE,
7 l" R! q% a. F  k                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
. j1 [$ v- {  _                                        UPF_IOREMAP | UPF_FIXED_TYPE,. x7 ^2 Z; b' ]1 R4 ]$ T: Y
                .type                = PORT_16654,+ v3 ]) s! F/ K( t# B  S  [
                .iotype                = UPIO_MEM,0 C3 c# k7 B. v' \) X
                .regshift        = 0,
: A7 m5 l: L  r                .uartclk        = TL16754_CLK,
0 o. ]1 v( Q( s. P; x        },+ \# h' ^( g4 `7 U! c8 S' J2 i: Z
        {, [1 e$ J8 s) L! T6 K6 U5 q, o& |, y
                .flags        = 0,
) e2 [  ~3 }* X& A9 `$ X        },
: F0 Q/ m* e! L1 d6 z; b) D};
/ Z9 Y$ V' ^. ?3 l
& o% I+ l7 F/ Q3 \, w& t......) S0 r5 k( b) r# G% ?4 T* M$ h4 L( G6 n
static inline void da850_evm_setup_tl16754(void): L6 R  U/ G4 z  Q
{
9 c$ ~6 o  h6 M% z! m......
/ ]0 c/ e% V9 \" O        /* Configure data bus width of CS4 to 8 bit */
- |% z/ x; U0 B' `        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &6 g& D% e$ L4 x, Z) \, Y) N- W
                (~DA8XX_AEMIF_ASIZE_MASK),
3 H" [$ N* K$ r, Y' D                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);9 x* D0 O2 Q2 C9 h: {
1 m4 H' H( F, n; X
        /* setup timing values for a given AEMIF interface */
+ {! P; C# ]7 `8 I        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |: e3 n+ f1 E6 g
                WHOLD(3) | WSTROBE(10) | WSETUP(4);8 s" _5 v/ Q7 i; C3 v
- q* m) A9 [: w9 j( l1 _: G  S; L
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
% N8 ^* V, |: t) z        val &= ~TIMING_MASK;
1 q; I& L/ M7 w* @        val |= set;  c! l0 a* ~$ n- R2 H8 ?. X! H* }
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);: d/ r: W; Y1 A: T1 L
......
* E0 X+ _6 `  w% z}
# t0 f9 u8 v6 }8 C) X
- R" q' a1 C# c. `: d而且在Menuconfig中已经对
# v. |! @( o7 V# SCONFIG_SERIAL_8250_EXTENDED 设置为 y) L' C* e8 S/ R$ N
所以此模块函数是被加载的,
4 \3 w, H! R! w8 F8 {
" |% v6 y% v$ a: a请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:5 n  u1 w; `! m' K
谢谢了. A4 `3 b7 [$ Y0 S0 v$ f% D
http://www.51ele.net/forum.php?m ... &extra=page%3D1
回复 支持 反对

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2017-6-2 08:54:31 | 只看该作者
厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-5 01:57 , Processed in 0.041349 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表