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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5556|回复: 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) {
6 }& q- Q+ e  ^" j  N9 P        /* Power on the EMIFA */) D5 J; h* ~+ i* R
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,( V( H( Q' z5 e  |
                        PSC_MDCTL_NEXT_ENABLE);
: @6 U9 S# l2 {8 e. u6 @4 P2 ^. t8 u/ y. M% n, E3 {9 Q
        /*selects the EMIFA pins for use*/5 ?: R6 t6 M# E+ a# P0 x+ w
        EMIFAPinMuxSetup();
/ Q7 t6 ]6 {8 B( {% z& x% u$ X3 D% q, k+ ]
        /*set the buswidth of async device connected.  16bit*/% v; A* i9 |. a& E: R$ K, Q; q
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,3 ~% v  R) Z9 A8 F
                                        EMIFA_DATA_BUSWITTH_16BIT);- \: P- O! D; ]5 r; v6 j& Z

& w0 d+ y& N+ R% G        /*selects the aync interface opmode. :Normal Mode*/
2 D+ E. I, {$ |. X0 Q# }3 K1 O        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
$ m: |$ @0 H( g, w6 s        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);1 V  z2 t, s$ P$ `
0 s0 {" C- D6 u/ X+ N. V
        /*Extended Wait disable.*// V! S7 A% \: ]) a5 `4 }" }
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
+ ?# z4 _4 E. R* I  `% @        EMIFA_EXTENDED_WAIT_DISABLE);
$ V" T- X! h9 b5 L/ a3 p
7 T- C1 H% }$ J/ v        /*configures the wait timing for the device interfaced on CS2
- v3 h% N9 c. ?5 K! k6 U) N7 e        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/, d' h. m7 i4 l& `% c
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,1 k: Y2 Q# p9 i# l7 O# l
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
; w% w, c, t& a9 L) k% v6 Z  ]& \2 U4 ]0 O
}
3 A# Q7 u" K" J6 z1 H# D还有cs4引脚的复用:3 {: C9 B- I9 G+ c1 s1 M2 k$ _
SYSCFG_PINMUX7_PINMUX7_11_8
9 V6 I) s$ ?2 o- s- S& ]4 d# j/ s5 y: j# x7 x9 n3 x, ~
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?, V5 g4 x; ]- B6 ]0 Z+ G0 l1 \8 ]7 K# S
谢谢!
) q: ?* M9 s! d" c$ l- @' ?% a( r9 T; y4 |% d7 T  o* t

4 i1 Y2 B$ Y2 n. K, e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
- i5 t) E1 E, t! K( o#if defined(CONFIG_SERIAL_8250_EXTENDED)
  ~! n4 z5 ?6 d7 I- T#define TL16754_CLK                147456007 N7 W! d; z1 j% `1 F, K- y
#define TL16754_PORT_N                8* d5 f- R- Z" y
......
& U0 z) o- i) b/ K9 u6 |9 e9 a+ Estatic struct plat_serial8250_port tl16754_serial_pdata[] = {3 q1 A0 V8 B  W" n0 ~" @
        [0 ... TL16754_PORT_N - 1] = {6 p7 C/ Z2 w- F1 \4 M
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
# E) ~& B) n8 u" a- B                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |, P6 c6 a( c; e* n$ z# n
                                        UPF_IOREMAP | UPF_FIXED_TYPE,4 c- Q; p/ Y. ?* z% O
                .type                = PORT_16654,5 R5 j  F* N4 H  E
                .iotype                = UPIO_MEM,
' H/ x2 _4 Q3 {) \8 I9 e                .regshift        = 0,3 \6 _) c8 X" ?1 L3 c
                .uartclk        = TL16754_CLK,$ n" F( O" B1 n  R
        },$ @0 O1 W' {+ f
        {% o+ T/ P5 U- A2 ~
                .flags        = 0,( b1 f5 W2 k# p4 @) \' H; M5 Y% ^" c
        },
! `: s# q' I# C; D# T};
# A: ^0 U! C6 m& H
% t5 t2 c, ]3 v/ _+ b......: j# t/ m) x- n( H
static inline void da850_evm_setup_tl16754(void)! ^) p' `. V  a6 Q3 l+ G
{! }# }* l; p3 b$ Q9 b
......
) T" j1 A* H6 x        /* Configure data bus width of CS4 to 8 bit */
3 I" P4 l; z" N. E( g, s& p        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
. h; w/ ?6 o5 Q! I6 e                (~DA8XX_AEMIF_ASIZE_MASK),
( i/ b+ |4 ], @; F( _! {0 Y5 H                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
+ I# {  M+ k/ D( q% q4 {# _
4 Y5 c, S% g: L9 j        /* setup timing values for a given AEMIF interface */7 T) \- `5 }! D
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |, p/ p% F3 ^0 I( y* H) V, X
                WHOLD(3) | WSTROBE(10) | WSETUP(4);
# C' Z5 q- N. u! J3 s7 d
! Y0 J5 a$ f) E: [* s' p  @" q        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
3 d* H$ m- {1 ]3 `6 V1 j) ]        val &= ~TIMING_MASK;
$ }0 ~. U9 {- Z1 z        val |= set;% k& Z+ ?$ s/ i5 i- a8 y
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
3 ]- G9 w/ E# M: {1 F' C......
1 Y2 ~6 [) q* Y( p( T2 N}
0 ~+ {  D' O7 j& P. P( c8 B. ^+ S& K) V0 f' h6 X5 u" P( i3 n6 N! \2 b
而且在Menuconfig中已经对2 }9 q6 F. p# H! V+ K/ q$ B
CONFIG_SERIAL_8250_EXTENDED 设置为 y; Y$ X. q1 h0 k3 a0 j) a( Z% P( g! b; ?
所以此模块函数是被加载的,
2 T/ F  p$ @) Q) x% q: J+ ?# T+ T8 Y" |) I6 o
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
" f9 C+ K  x$ G5 G3 z. m1 v: X3 e谢谢了: _, k$ H1 s0 j
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-6-16 17:09 , Processed in 0.038459 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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