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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5915|回复: 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) {- x) f: H" a4 {
        /* Power on the EMIFA */5 U$ b5 c0 h, x9 ]) U
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,0 B  U; |7 c; h, }( {! l7 O2 \
                        PSC_MDCTL_NEXT_ENABLE);
" m) y4 H* \3 y( {, f3 v+ @& @6 G5 G, P. W* L% ~9 w) j: @/ w6 }
        /*selects the EMIFA pins for use*/
2 I' {1 G2 P" C) x3 x  w        EMIFAPinMuxSetup();7 c2 d$ C& v3 n; ~2 M- {$ }# h

9 Q* h$ a. @% K        /*set the buswidth of async device connected.  16bit*/
8 W, D3 h  b# F+ x. ?        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,1 i9 d* j( C! q# |
                                        EMIFA_DATA_BUSWITTH_16BIT);- {& d( B$ V1 M# y

: x6 s$ e" r, d! L        /*selects the aync interface opmode. :Normal Mode*/
- z) K2 B3 j2 O" w! I7 e' H        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,9 @+ w. _: W8 D
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);0 M3 N( w! H% p! }' ?

1 ?$ |  z: t* _" C9 B        /*Extended Wait disable.*/
* i3 @& h' k$ O1 |3 l. U2 {8 f' @) P        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
: N  g- e+ n* C" [! V        EMIFA_EXTENDED_WAIT_DISABLE);- n$ G8 q; a4 [, X3 @. @; U4 e. ]
# H9 T2 V1 q# u3 ]! z
        /*configures the wait timing for the device interfaced on CS2
+ }' z) \" B9 l        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
* M9 k% R" ^& ]3 ]8 `        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
: g) U7 P+ ~$ n9 o7 H                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
% f# k7 W" e8 }% V' O7 b( T. [$ ?- g. Q9 x; Q7 p4 L( \8 k& C' t  G
}( B& ]+ j. s; a: y3 Q$ M7 y! M
还有cs4引脚的复用:
! e( n" ]2 q  _$ `2 V) b$ TSYSCFG_PINMUX7_PINMUX7_11_84 R2 N' U. \3 m/ w- w( i' i

4 R1 C& z; F( T! g最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
, h& u9 _8 x3 ]) I- p8 v谢谢!
* B( G5 m/ M1 J! y$ M/ z0 m4 ?' u) e4 Q! M; b" n( }

" C. f9 n8 C0 g+ V7 a' j& Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
$ e+ u  r* N0 p8 O# K! i0 `#if defined(CONFIG_SERIAL_8250_EXTENDED)6 r* U5 f# u2 U6 j  G# o8 ?  d! W& l5 M
#define TL16754_CLK                14745600
& b# F2 z: L1 d2 [" n. Y#define TL16754_PORT_N                8) K* W3 s! r1 \' B% O. w: X
......
  V9 `: u* V9 kstatic struct plat_serial8250_port tl16754_serial_pdata[] = {/ c) o0 {2 g1 w5 U3 f
        [0 ... TL16754_PORT_N - 1] = {( P7 y9 \0 T$ v  W1 v) K; z
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
% ^9 j# V5 W% O) P                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
+ N) f* b% j! V, m# d, k& R, m                                        UPF_IOREMAP | UPF_FIXED_TYPE,
1 V0 w9 U+ m9 Z0 {                .type                = PORT_16654,
4 ~6 J& Q9 b- K  A                .iotype                = UPIO_MEM,5 b7 D& H/ \$ o, J
                .regshift        = 0,/ D/ b/ Q& u( k
                .uartclk        = TL16754_CLK,8 M8 U! u! v# B3 l
        },- n$ P; q; ~% d% n6 W
        {
  ]6 n& n! _) l  G                .flags        = 0,8 W+ ~* v( @! F: z: c* O$ s7 f# z# k
        },9 V. C0 W% h. X$ D) u% a
};& f( W, O' ~+ Q, _. v
3 _0 g- o& `- ]: W" g/ \
......
) q4 Z$ f5 |' V$ H5 G: g# tstatic inline void da850_evm_setup_tl16754(void)* V7 e+ J: i8 Z; J: e
{. P' u; \* I" T6 b9 U
....... h% y+ @- g  |8 {3 y
        /* Configure data bus width of CS4 to 8 bit */) W; a( ?* s6 b/ a( u
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
: C* ]' U/ L. ?. Y                (~DA8XX_AEMIF_ASIZE_MASK),
/ |! u  U. C& B% C5 B$ N) g. }                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);: f( i$ J5 Z+ r1 i' N
0 s7 g# {# |+ g  f+ [; b; H
        /* setup timing values for a given AEMIF interface */; h6 V" u. T8 r1 M' E
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
0 `( W: i4 t4 e, P1 ?- Y, f                WHOLD(3) | WSTROBE(10) | WSETUP(4);
" r) q/ o; m) l( @' q3 t: U3 m) [+ V9 u. l- N+ J
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
& _5 X( f4 `3 G0 ?        val &= ~TIMING_MASK;
. z; {# T: O0 w, ~$ o' D  U0 p        val |= set;2 d3 V' ?5 L! s/ F  l
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
0 p' o9 ^9 f# `1 e( _......
5 f7 u) U: p" _1 D& k+ G, ^}
" f+ b2 j: x& v3 B* g) [9 y1 p! C' q3 x( p6 ?/ l
而且在Menuconfig中已经对  K8 R* d: `- m$ F( w' ]
CONFIG_SERIAL_8250_EXTENDED 设置为 y
) Q* S3 ^+ o* E1 G3 {2 ?. U% f所以此模块函数是被加载的,
8 F* p% }) [3 F- z1 D" h+ s
; J8 |: W! V0 R! F请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
& S1 `  P* V1 k" \$ y0 H谢谢了
# p5 w: z* H& X" o2 q4 t6 Khttp://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, 2025-10-14 15:11 , Processed in 0.041454 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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