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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5557|回复: 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) {
4 t+ L# d8 `7 |- T$ o: N7 z( z        /* Power on the EMIFA */
3 h7 |5 @) x. M        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
9 l0 r  k  t; S2 ]                        PSC_MDCTL_NEXT_ENABLE);4 z7 e: h! O$ z6 Y5 q! O* S
* E2 c- {1 `6 z$ |1 E
        /*selects the EMIFA pins for use*/
; X: w/ u: E  c( s        EMIFAPinMuxSetup();
+ P* ~7 o! F' O8 ~0 z( y9 x$ X& I2 O% b- P/ E  N1 g% w1 |
        /*set the buswidth of async device connected.  16bit*/
% k: s$ [8 _( X5 c& l! d& z7 R# T        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
. L8 a0 y) g" t                                        EMIFA_DATA_BUSWITTH_16BIT);9 O9 @$ c# `! r2 K2 y6 O: e
# s8 j- t5 F1 s5 u; Z
        /*selects the aync interface opmode. :Normal Mode*/! S! N3 ]8 A" ~: ?
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
' o/ \! ^$ C* h) n0 W        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);2 H) \; R: ]& [: U
# ?1 W$ M* }. }' c) ~' L5 R
        /*Extended Wait disable.*/
! t) t+ x% C& Y# c        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
; z4 v+ \2 h6 v7 W        EMIFA_EXTENDED_WAIT_DISABLE);
4 r9 ]# L6 V: I8 A/ o% l
( S& f4 E) j, ]4 O$ f        /*configures the wait timing for the device interfaced on CS2/ u; n! s/ `# }& l) K7 G
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
' j2 G8 u" |8 A4 S        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4," g8 P* K8 @/ m  h$ Z2 X
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));6 b- m2 K% ^0 r" c+ R
- l$ K* ~7 G1 n# t( F3 B% u
}  n( w7 q- n% }* j
还有cs4引脚的复用:) {4 ^" b' V! S+ F: U5 i
SYSCFG_PINMUX7_PINMUX7_11_8
% F- v# A$ X0 W+ c1 G5 {, V# s/ J8 o% `  g3 z; |
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?: Y# V* d) d7 x# S5 ]! x; I. }. O  {: U3 c
谢谢!1 e4 Z% `$ \% h- a; X& b6 t# T
5 ~6 s6 P: @; \
' @( J6 g" m+ ^0 X9 u# D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,1 K4 H7 \7 z- M5 |! P9 r( ?! e
#if defined(CONFIG_SERIAL_8250_EXTENDED)/ K9 S3 |/ ?' p$ O1 X
#define TL16754_CLK                14745600
/ X: h2 U) }3 n# x/ \3 H% j* r#define TL16754_PORT_N                8
2 y5 q# }, v& j3 a......
0 O: b( L6 L( ^5 E' Z& |/ mstatic struct plat_serial8250_port tl16754_serial_pdata[] = {% D1 W# Z7 z0 \1 a( {4 v
        [0 ... TL16754_PORT_N - 1] = {/ h9 G/ ^- r/ m4 f. b# i2 M
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
  |4 A! R  z. ]6 E5 |, r                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
7 S" W" g' u: ~2 X# C. [) m                                        UPF_IOREMAP | UPF_FIXED_TYPE,
! `$ O$ C2 W, r+ I                .type                = PORT_16654,
4 E, K, K# T$ d/ ?% _3 {5 I                .iotype                = UPIO_MEM,; @+ d/ r! c% \2 O, n& n
                .regshift        = 0,2 {: B* k8 {/ C
                .uartclk        = TL16754_CLK,2 ]1 \5 c: Y8 |. g
        }," r/ d( G' d$ z: V9 I" l
        {
. Z* [) V4 Q6 C2 x9 R. T" @* H8 q                .flags        = 0,* z0 d3 w& t! N( F! ]
        },
' H" X* M0 \& u& ^( [' l4 H9 ?};
5 U8 M6 e2 h$ M5 Q* v; n: }) T, s3 h7 T5 ?5 C, N
......
  [9 K. y; {+ T  b9 C1 b2 ~static inline void da850_evm_setup_tl16754(void)
7 f, A6 ~" X. f1 _6 o+ |{3 ?+ c- B2 z; |/ s; b
......2 G8 V4 H8 J! ~' g7 y
        /* Configure data bus width of CS4 to 8 bit */- f  {% X5 Y0 }) m6 G' b! Q
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
) |/ `/ B4 y. O                (~DA8XX_AEMIF_ASIZE_MASK),
7 J7 a' B+ _& ?7 d! d                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);7 K, _; Y) A8 G  o4 H' z5 q

! I* o/ a" N" G5 I9 p. f        /* setup timing values for a given AEMIF interface */# y9 S4 u4 ^: |1 |
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |1 R2 h6 R. |; b
                WHOLD(3) | WSTROBE(10) | WSETUP(4);
" O. M6 @% W/ ?& t( o( S- C6 f/ r
; S+ Q3 W2 L( _& t        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);) c$ n( D1 v) F8 R7 E
        val &= ~TIMING_MASK;
# f& M9 H2 K9 j) C& K6 e        val |= set;
. b' F: x9 s5 L% j# K        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);) `" y! J' [9 X$ o9 ?8 f, A- f2 ]& i
......; a; R% S0 k( R; q6 j8 Q; O' Y' R# o  q
}
& _; ^+ B& A; o- b; B2 l* M, x& v  E: u4 [! z3 U6 j& X
而且在Menuconfig中已经对  E  g0 f2 \/ K1 g" |& Y% h- i& _
CONFIG_SERIAL_8250_EXTENDED 设置为 y
8 z, Y% A! O# m+ B1 s( r0 t所以此模块函数是被加载的,% ?1 ]& G# ]9 w! N( N, A
1 o( H  P* U- c0 B  j7 p
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:- n6 O, A- O, t7 u
谢谢了: @  Q: s9 A7 i
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 20:13 , Processed in 0.037747 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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