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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5425|回复: 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) {
. R, @: L7 e2 ?, ~0 {) T        /* Power on the EMIFA */
6 S) q( I# V! t        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
' n. N8 e9 ^4 q% e, q, j                        PSC_MDCTL_NEXT_ENABLE);. t6 @. _- d0 R, @

5 @  d  C# }) t1 c8 ^2 ~( z+ _2 M        /*selects the EMIFA pins for use*/* D& ]% f" Q! A8 }
        EMIFAPinMuxSetup();
/ _% f# @% l8 e; t. ]# r7 Q3 K: _9 @! K  s+ s; M9 a/ G. q
        /*set the buswidth of async device connected.  16bit*/
4 l% L- r2 ~- G  E        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
: H9 A) F0 o* B# Z3 h                                        EMIFA_DATA_BUSWITTH_16BIT);4 R" l; g3 s, t8 h, h- L
4 e+ D* r; h; `! R9 U; S3 ~
        /*selects the aync interface opmode. :Normal Mode*/$ t0 j' _2 N2 B# _6 E$ E3 u3 Z) O
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
) z! o8 G1 h5 J        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
" G& Z3 P, w: s8 S3 B) ~% l6 O$ M+ t$ F1 ?
        /*Extended Wait disable.*/
: p0 d0 w% d+ U5 u& e        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
  W- \) d; g. b; l! M$ k2 D        EMIFA_EXTENDED_WAIT_DISABLE);0 S4 ^. f: ^1 T1 y& F
, t, j; S* l" j7 |0 b! f+ ]  v* G- s
        /*configures the wait timing for the device interfaced on CS2( R3 C$ R2 ^0 ~) C% W, g  ?( S4 J
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/0 |: n7 L$ w0 {* O* G/ @
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
$ w  B1 |1 ?8 C. }$ J9 F4 i                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
6 d9 N) N9 W* K+ m9 \- o6 C0 h
' V8 Y6 T3 N/ \  K, }4 w3 p}
0 n; L9 x$ q7 [' \; t, n还有cs4引脚的复用:
; _9 F$ p# X9 @& \5 E: sSYSCFG_PINMUX7_PINMUX7_11_8
: u: ]8 T% `+ {! A4 o. Z+ K
6 _, V7 c( J- D; D最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
4 w: J; R8 e/ A; n5 V5 k谢谢!
5 z, g6 {, ]# `% v) ]; o
) m) r3 a  P. {# q  J4 e
: _& p5 ?- [. E+ A4 s  e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,6 R$ c, _2 X5 V( T( P
#if defined(CONFIG_SERIAL_8250_EXTENDED)6 j; f+ A" a' U
#define TL16754_CLK                14745600
4 `* Q* Y, a+ v#define TL16754_PORT_N                8' G8 I; V7 `0 u% O% ]
......- N& T9 q* i$ }$ `: l8 R
static struct plat_serial8250_port tl16754_serial_pdata[] = {
8 L8 z# O7 N8 p. y5 V) R% I6 h        [0 ... TL16754_PORT_N - 1] = {
# ^* p2 Q* \- D) W7 h6 e0 o+ L# ~                .mapbase        = DA8XX_AEMIF_CS4_BASE,' e0 W. f% V; v+ O' q) C8 I
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |4 u' n4 c4 \2 M0 w3 n
                                        UPF_IOREMAP | UPF_FIXED_TYPE,4 n4 ?* |/ y. ]8 [
                .type                = PORT_16654,
# R' \' J4 V: j; v                .iotype                = UPIO_MEM,  V. h( r( A* _# X1 @' f) m0 a
                .regshift        = 0,& @2 n4 N- Z: N9 t& V
                .uartclk        = TL16754_CLK,7 i7 k% ]/ N+ G# Z, U9 q+ U
        },1 ^8 b. R% }2 Y
        {( {* A; Z; f: D6 w  \
                .flags        = 0,: F" w- X3 j* o8 F8 o. \' p
        },. t& F, |+ X3 ~. y% O( P7 q7 {
};
; a2 j- C& O3 }2 k( C! w" h9 |" Q$ g1 b0 Q& K
......, U  g3 j* C5 K6 T) J
static inline void da850_evm_setup_tl16754(void); _! |8 e: o: G4 @* n" [( J
{
- e7 C+ B( K! G4 q$ L/ V6 _......) d* a( `' P7 ?  }7 U
        /* Configure data bus width of CS4 to 8 bit */
" g9 O4 z5 ^3 b( X! b        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &7 N" @6 k: B) F& \# ]
                (~DA8XX_AEMIF_ASIZE_MASK),  _, c4 b' }$ t: n  G% V$ H
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
- @" A4 T: r' B* U* {4 _* W
* a2 P- }+ N- W5 S7 b: w; m        /* setup timing values for a given AEMIF interface */
0 `8 L4 D) e- p' ~        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
4 {: q2 V1 u) s! C0 e- D+ _# T3 P                WHOLD(3) | WSTROBE(10) | WSETUP(4);( E/ v$ ?3 W' _- U9 @3 b! P+ I& [

! ^$ `$ {) M8 j( j        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
, j& v% D4 M( c        val &= ~TIMING_MASK;
. R! a5 l. g7 Q$ ~, M3 q        val |= set;6 Z! o. D: |) c" |
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
& c% }. Z/ c5 _1 T; I......, K) Y2 S* T# |# a6 S3 E
}
5 P' Y4 i( R2 a7 E7 z
/ A$ Z3 S: z2 S- \而且在Menuconfig中已经对! y7 d% X4 a0 g
CONFIG_SERIAL_8250_EXTENDED 设置为 y
; \( W  x1 T  D! ~7 t7 L# k所以此模块函数是被加载的,
+ \2 c' d% x# p% x8 _
& V, ?5 `# L/ k请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:2 P* |2 f, g, l+ p2 K. A; c" N1 G
谢谢了
1 o8 i: _9 y; g* U0 [9 Y$ rhttp://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 12:04 , Processed in 0.038180 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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