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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5423|回复: 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) {
  X2 U- j# P# ]& b/ }5 t        /* Power on the EMIFA */9 `1 e6 Q+ L, c. k- A' D
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
  c+ W) x, }! B4 y7 P2 W; W                        PSC_MDCTL_NEXT_ENABLE);% R1 j- k2 n4 i! G
8 h$ l5 p4 H0 j2 M' z# q
        /*selects the EMIFA pins for use*/
$ X5 _2 D2 p( E  x3 u3 P9 ]2 |: [        EMIFAPinMuxSetup();! j6 b( @% v% a+ S( G8 p

3 n6 U' h3 y& k        /*set the buswidth of async device connected.  16bit*/0 v; K. n* x$ B
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,0 o  k  S6 o/ z" u; k% y
                                        EMIFA_DATA_BUSWITTH_16BIT);+ d- E, x* j' ?& G* s& u

  g3 k$ o& h( a; \* h* i9 b        /*selects the aync interface opmode. :Normal Mode*/5 v6 {/ k- t# o- E- x
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
( N- v  k9 L7 q* G        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
5 n( X  e; D+ c& d7 f/ e' G; y3 _" R; H  |5 d
        /*Extended Wait disable.*/
6 G  U% W6 q6 X. o' W; ?/ s0 A5 k        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
$ F, E- Z( W4 S; F6 t/ T4 o. l, B        EMIFA_EXTENDED_WAIT_DISABLE);/ [$ |+ e7 [" V  `) I
0 w& E: U0 }' M9 k9 |& l/ u) G
        /*configures the wait timing for the device interfaced on CS22 v4 H( e3 t* t2 ^: d; `6 b3 A9 [
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
; W5 L  [" {# P4 m) K: l        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
) o# `1 U3 R/ f0 L                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));* t1 M" @5 W( w
1 G* z: D1 `) O9 u
}- o. V3 s3 r; J7 ^
还有cs4引脚的复用:
; P; @3 m$ v$ U' xSYSCFG_PINMUX7_PINMUX7_11_8, B) R6 {+ Y, H! _1 V

$ ^% K+ d  v2 B0 G. F最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?, g  a: A0 T! x/ N
谢谢!6 s9 r# H( P  [" s+ ~
$ E5 X% J. T. T7 x, _6 C

2 O0 E  n3 T5 f: n8 @: M" z' T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
: Y( q) C% G( _9 Z" E/ G6 L( D#if defined(CONFIG_SERIAL_8250_EXTENDED)
# ?# A) F1 ?) s#define TL16754_CLK                14745600& M/ c( T  S+ Y* y7 f7 F
#define TL16754_PORT_N                8
4 `+ w6 A5 p6 P/ Z2 T......
" I: |- G- S3 w, [static struct plat_serial8250_port tl16754_serial_pdata[] = {/ C% i( \6 ]/ M4 [0 S
        [0 ... TL16754_PORT_N - 1] = {
7 E) h) w" g+ g# ^) l                .mapbase        = DA8XX_AEMIF_CS4_BASE,* A: \: {( l. p: }
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
( J) D6 u$ p+ p9 u; ^                                        UPF_IOREMAP | UPF_FIXED_TYPE,) t0 t4 x2 G. H1 Q* s
                .type                = PORT_16654,
# W7 E) B3 G+ H4 X                .iotype                = UPIO_MEM,! H6 O; ]( u0 u  A) a$ z4 i4 m
                .regshift        = 0,
9 v' d2 ]& P4 N1 O6 C) q$ v% j                .uartclk        = TL16754_CLK,8 t& f' X1 ^' ^1 i3 B" a7 i2 O
        },
- ?0 }- Z3 D; T7 m        {- U: j3 z8 z% f1 U
                .flags        = 0,
, p4 }- T( u) {" C        },' I. l$ I, y  j  b! }/ E
};% E" I( ?0 K% O1 }6 y) y

  N& F; W$ O! I! E5 c: n......' _2 y# y6 D) V) C: z. p; h
static inline void da850_evm_setup_tl16754(void)
+ C/ d, z! Q5 p1 j/ F$ F{, n% J: {/ z3 G4 Y9 {' r6 p
......5 h$ Q* M0 A% s
        /* Configure data bus width of CS4 to 8 bit */
3 m3 f7 v7 j8 w3 E; j( g) j        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
8 V! @0 y& s' a( o2 e7 @" z- j                (~DA8XX_AEMIF_ASIZE_MASK),! x9 z1 j4 h! }) t1 E. l1 o
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);: c& R0 i9 H' C1 S0 n9 s) c" k

* X. A9 d& ~; l8 z% F6 ?8 q% @        /* setup timing values for a given AEMIF interface */
: C& ^! ~' p4 y        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |3 @' g! n. i) O2 x; e/ V; H& I
                WHOLD(3) | WSTROBE(10) | WSETUP(4);) @% P  v& f9 V- L$ c! w
5 a/ t, ]. P, `5 R$ ~* x6 A) O
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
6 I* A+ z" T9 L" x5 ^9 o        val &= ~TIMING_MASK;
/ g$ T: y, \+ }1 E        val |= set;0 e" ?4 ~1 [5 B% @* j
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
* n0 h4 @+ g( b8 D....../ E, M7 D8 V6 }5 ?6 M# o
}4 s: B: }9 F  S+ ]$ d

) W8 m9 d* _7 Q: y/ v而且在Menuconfig中已经对
% s1 ~1 X: V. o" B$ W3 n  MCONFIG_SERIAL_8250_EXTENDED 设置为 y
0 _0 k% e+ [+ y( R1 ~所以此模块函数是被加载的,
. Z% x1 q+ z* t" o3 Y2 [8 {2 T" [
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
. n! C! Z: f, ?) C0 I谢谢了& o: j  H& q, g; o% J8 u" n
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, 2025-4-30 10:09 , Processed in 0.038387 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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