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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5638|回复: 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) {
& h5 ?5 R  i9 H        /* Power on the EMIFA */
2 k' _, M& G3 B, y2 o        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
5 h- y( B' a* D; W5 K- l% h                        PSC_MDCTL_NEXT_ENABLE);4 G, m# |/ f% L  ~* n: B

% s& ~3 U& a: q( x4 s/ ]        /*selects the EMIFA pins for use*/0 l: E, X7 I2 M7 u' Z2 B  V
        EMIFAPinMuxSetup();3 q3 G4 D' @3 Y7 Q3 q

3 `' ]5 ?/ Q) [8 ~% X, ]) I/ U        /*set the buswidth of async device connected.  16bit*/: {0 o2 L/ X1 W) c% n& }
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,1 H/ k% v5 T* m8 c" q
                                        EMIFA_DATA_BUSWITTH_16BIT);: R$ j* {& g, K+ f; H

+ _" f' E7 V- H' T4 o, i- V        /*selects the aync interface opmode. :Normal Mode*/
; L2 K1 Z  \, W/ f" t& ?        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,: z  v1 q+ J! R% U, g
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
, H/ ], l' H: N/ q: ?- N
- z$ I4 K/ u  S* E$ f  ?  |        /*Extended Wait disable.*/
" M, t; g' R+ \+ f        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,# P, Z4 p: n& s" A
        EMIFA_EXTENDED_WAIT_DISABLE);5 P' N& Y, V8 j& Q9 A
$ f% K1 l5 s7 s, W; X9 s+ u
        /*configures the wait timing for the device interfaced on CS2
/ a, L5 B% i; o: x. Q. q        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
" @2 ~5 N& i9 r3 F        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
% O" j5 _/ M$ B3 e) C                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));  F9 R7 @9 A1 `4 A5 A

! q6 Q1 S" X, W& b$ v}6 B. ]- _- i! p2 x
还有cs4引脚的复用:8 b' a, x! a, j9 e1 t# t/ \
SYSCFG_PINMUX7_PINMUX7_11_8
& k& f& G- R( ~& b1 b! G7 B* T& R1 \7 l; a
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?! n/ F* d. X: a1 T# X/ }
谢谢!
5 l& N/ X" H$ e7 t' r
5 w+ |; P7 s, i9 U* f6 P7 k' l8 C2 K' H) S' {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
; ?: T" m. Y6 y* B' B) E/ }( X' [- P0 g#if defined(CONFIG_SERIAL_8250_EXTENDED)
1 j6 v  s! S$ L- C: ~, n9 P5 b, j#define TL16754_CLK                14745600: h/ p( y' I" a4 f
#define TL16754_PORT_N                8
7 p7 W: S1 G* d; h3 Y......
9 z& ]6 n9 |& A) vstatic struct plat_serial8250_port tl16754_serial_pdata[] = {
8 ~3 ^  Q4 A- ~0 P& q; D        [0 ... TL16754_PORT_N - 1] = {
- o. x, W" x" h5 h; y5 X                .mapbase        = DA8XX_AEMIF_CS4_BASE,; r: I! m+ \9 ]: ^/ `
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
4 t, \9 i& e) s# z) h# b                                        UPF_IOREMAP | UPF_FIXED_TYPE,
2 G/ H) Y* U0 a0 e) Y                .type                = PORT_16654,7 P* O6 y9 {- ^$ H( S' ^- E
                .iotype                = UPIO_MEM,
1 W7 b0 y1 M' r9 a8 k                .regshift        = 0," X4 n, z7 t1 m! B
                .uartclk        = TL16754_CLK,
& P# g5 l5 N) j. u) ?$ S        },
4 K0 r  X" v7 n0 b  T7 Z1 |        {$ v( J! o" ^: ]3 _4 {7 A9 g% r
                .flags        = 0,
9 P8 u, s" a! u; K, \        },
9 q3 w/ z; W' ^- }};
% C% U+ Y5 s& k$ y% T% H* j8 ~! l9 b8 x9 E- Z% b% b, ~) b
......
4 V* i4 |6 [# H5 zstatic inline void da850_evm_setup_tl16754(void)
, q8 r0 w7 h* p: i6 M{) m# Y0 r2 R/ n9 `
......
+ l- y& [* `8 u8 c! ]# t        /* Configure data bus width of CS4 to 8 bit */
* P* b: m, z5 m        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &2 u, B4 j9 f- s8 g% |  u: l; j: ~
                (~DA8XX_AEMIF_ASIZE_MASK),
4 ]4 Q' S5 J; f9 }& W9 m                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
7 O! h5 s5 l0 @7 s' Y& r2 }  ?/ n6 f$ v* b- Y; G9 E
        /* setup timing values for a given AEMIF interface */
' R* |1 }9 Q8 t7 ?" I- i) O4 ]; U0 g        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |5 Y3 D; |9 f" @3 O9 {$ M
                WHOLD(3) | WSTROBE(10) | WSETUP(4);8 V9 ~6 s( ~- P: x5 V* t

3 p6 d) F9 N' \/ n4 Q- ~        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);$ y& |  Q( C# P- {  U( K
        val &= ~TIMING_MASK;# h( _9 i: ]5 P+ Y4 l+ j" K# A' _
        val |= set;
9 s) [2 e1 d; T! l( C        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
! }. M# w/ v) S+ f( V# T( T- s! R......7 ^2 `4 n* X. J( K" T
}- q' S9 I% I5 G3 @& ]

( n: X4 q  j; R而且在Menuconfig中已经对
& B) I% N% ^8 ECONFIG_SERIAL_8250_EXTENDED 设置为 y
2 A! g% m7 m% A# d, Y所以此模块函数是被加载的,# V* M8 e! S/ f9 H, z
; |  F+ J! o3 f2 P5 a
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:% O% i- D/ Z( C8 r  o5 a  q4 @
谢谢了
7 ~' F/ P8 o' {0 ^5 A* Zhttp://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-8-2 20:53 , Processed in 0.037417 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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