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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6153|回复: 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) {+ m4 `% M  g/ z8 y' M
        /* Power on the EMIFA */" V0 n' Y3 ?( B9 x; P) q3 `
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
8 c0 c! R" m9 H+ \                        PSC_MDCTL_NEXT_ENABLE);
% l7 o5 B2 y. y6 s: R
! ?! J0 a/ J5 f( u; l        /*selects the EMIFA pins for use*/
7 w: e% ~; Q3 {% M        EMIFAPinMuxSetup();# E  D# M9 g! f  |

; H* r% I( m0 ]' x* c        /*set the buswidth of async device connected.  16bit*/. i+ P7 s% y8 C8 D# y+ T. g
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
4 e7 f5 g# z& M6 E                                        EMIFA_DATA_BUSWITTH_16BIT);2 L, ?' D# U3 f* n7 C+ G! [

) z, {! |8 G/ L        /*selects the aync interface opmode. :Normal Mode*/4 }5 T- ~' F" x  l/ y* a
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
# @& y' A6 `2 B% w) S8 Y* e        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);. \% r8 n+ A/ m  l# Q5 V/ k
( g/ c- @) Q( D" T
        /*Extended Wait disable.*/7 `+ {+ X5 J) W* J; f
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,' V* i* M7 d2 B$ `4 o
        EMIFA_EXTENDED_WAIT_DISABLE);' Z4 Q2 o# i( [4 p

  K2 C5 }, m, T3 N; e8 [9 i        /*configures the wait timing for the device interfaced on CS2
# @' T! G5 Q6 w/ s        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/1 ]: u9 [/ u* N/ C( c0 l
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,/ `, U* K; T: f3 M2 u: P; j4 i7 L- |
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
0 \7 a) I; N. R! n: Z" _; k1 X1 K+ M, z8 Q2 v
}
7 \8 D. R9 B5 B" z( X) @7 x还有cs4引脚的复用:4 X- U2 ?, Z4 F: u) G4 Y  B
SYSCFG_PINMUX7_PINMUX7_11_8
& ]+ G; W  R5 C9 g! r! @: ]+ \& m9 w
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
; v! U" O" F& h- I4 I谢谢!- B; w4 p1 f3 f

- @9 f$ k% b; F% S& {
( D) Q) v0 t/ E1 g$ i( I( t& ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,' Z  s+ z  N& p- a4 u8 I
#if defined(CONFIG_SERIAL_8250_EXTENDED)
+ F" m% q8 c' g. y$ O) `#define TL16754_CLK                14745600: G7 Q3 B& j0 M- @. O, U
#define TL16754_PORT_N                8
5 J' g3 o1 w6 }......
6 s, F6 ?4 f1 u. B* Z. Ustatic struct plat_serial8250_port tl16754_serial_pdata[] = {
3 b) ?  O; R% l  k. d3 T$ D2 G+ C" z5 a        [0 ... TL16754_PORT_N - 1] = {
" T3 Z) }- j9 e, N7 [                .mapbase        = DA8XX_AEMIF_CS4_BASE,( \% f. G" ^* i9 w5 b
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
& D6 d5 V& \6 I  w. A: T                                        UPF_IOREMAP | UPF_FIXED_TYPE,3 ^! G6 T8 }/ Z
                .type                = PORT_16654,
$ k5 }' o- d! O4 s' ]' r  }+ Z+ o                .iotype                = UPIO_MEM,
) |" R1 I' t5 Q: M, H                .regshift        = 0,
) ~( z3 @/ K6 y9 \* z/ E                .uartclk        = TL16754_CLK,
8 E; h# P( r9 k, ?) O/ |+ L        },
/ _  T, [- L2 h  ]! ?5 ]# v4 N        {9 G1 D4 U7 z2 x6 A, _% D9 i1 M' T
                .flags        = 0,
- p% l$ R0 ]% ?+ t/ N1 O2 _! o        },: z# [/ z8 m# G' k/ A- A+ n: m* }
};  Y2 V4 H! k# s6 A& \/ T

+ e- s! h- T0 T8 B& R5 Z1 q2 T......
; _2 F% n( B2 {( ?& p* Dstatic inline void da850_evm_setup_tl16754(void)# C; i$ X( e" @0 T5 s/ [
{/ [  L" B9 V1 L  T9 T( E: Y$ I/ N# G& @
......
& _# C5 k7 @/ ]7 V& t8 Y6 z5 g        /* Configure data bus width of CS4 to 8 bit */2 [1 i9 e( \( ?/ Q( `6 {" K; e
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
/ J7 ^8 V/ J9 @4 n                (~DA8XX_AEMIF_ASIZE_MASK),8 d% d5 M: z' `( g: J0 O5 v
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
& C6 \0 n) ]6 Y* O2 `. z1 l
) E. P2 w! x5 _) ]2 R        /* setup timing values for a given AEMIF interface */
; m; G. W: V) P6 ^. T+ y        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |7 L# i3 r- I. q: g) `3 Y- b' v1 n8 G+ w
                WHOLD(3) | WSTROBE(10) | WSETUP(4);- Q/ c) }# e: V) a% X
1 {: T- X; _& w2 L" l$ h
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
' Y  s8 _' \9 y  C2 a- Y: j        val &= ~TIMING_MASK;- {/ Z" o' O+ s0 n' Q) x' {/ A
        val |= set;& F& C5 [) K' ]. f
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
# X3 u  B# b  b, C......6 Y' |0 L6 ~& w9 @7 b* h
}; M  Z' Q9 m2 @0 i5 p% t
+ D% X4 G/ M( Q6 g7 m5 [
而且在Menuconfig中已经对8 i8 y( w* b7 y
CONFIG_SERIAL_8250_EXTENDED 设置为 y
4 \' a: L+ D; X6 x- \! _7 P/ x所以此模块函数是被加载的,* A: O0 l. f1 H0 p2 u

; N  a+ }1 r9 }7 k& ^& Q8 X请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
8 U% t( I) o/ N& q0 X7 L8 i) v谢谢了
6 i; E8 x/ p" F+ j7 y. Qhttp://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-12-13 18:09 , Processed in 0.038261 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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