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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6160|回复: 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) {) G) B' o- q3 v- L: S1 q
        /* Power on the EMIFA */
: W6 l2 T. J  \5 @        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
( S, r2 c+ c9 T                        PSC_MDCTL_NEXT_ENABLE);
) W0 I0 F% C3 a6 c7 K/ W' }5 z* t" K5 K, [5 \2 A6 c
        /*selects the EMIFA pins for use*/  l8 x* ?% ^6 P) I% D2 ]
        EMIFAPinMuxSetup();
5 E" g$ {2 ^; f5 @8 q# _' g, a) V* M) v
        /*set the buswidth of async device connected.  16bit*/
/ S$ o5 x; A5 p        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
2 c& A; N+ Z( l% \7 Z                                        EMIFA_DATA_BUSWITTH_16BIT);9 Q, u2 t+ s$ T
8 y5 w# C  }. K' @& w1 u
        /*selects the aync interface opmode. :Normal Mode*/
2 G' B# a: e5 p5 g8 {        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
5 @4 j4 G- E6 D        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);/ p: U: ~* g/ F( ~- d- |  ?, i
6 G& [5 T" a! @8 b
        /*Extended Wait disable.*/- T+ p# d, @* T/ z1 }" t( |2 x/ h% |
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
3 }+ j" ?" k1 ~* S# G' {& F; u        EMIFA_EXTENDED_WAIT_DISABLE);
" m3 I1 ]" D3 v
8 |. i6 X1 H5 B        /*configures the wait timing for the device interfaced on CS2
# m" r& t4 b! S% \        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/  w: P: A1 f& D, @# G/ J' r  s
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4," g& p0 {- D" k" O' o( V) r
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));0 V0 C( |2 {& W$ T; P" @" B

# O, {- R' x  b( d" {- A}. j- i4 e9 z; ^/ ]. Z1 i8 h, G% G
还有cs4引脚的复用:
$ W7 Q. s$ x  N7 b% m+ G* W" ^SYSCFG_PINMUX7_PINMUX7_11_8
8 l0 f. k& `, W8 A  O8 `
5 P6 t1 g, Z1 p1 x) s' S* O6 N最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
! t+ w# A, A; N: R' d- Z谢谢!: z5 E* L( V" ~- g- F% b: O
2 |- |3 `" o/ [' o0 J
3 N: g& ~9 v7 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2017-6-2 08:54:31 | 只看该作者
厉害
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
0 g! [- V4 o# S. n: U. a! z' g谢谢了
6 O! a+ e6 F+ k4 D: ]0 o# Thttp://www.51ele.net/forum.php?m ... &extra=page%3D1
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,9 T" S0 x' o" Z
#if defined(CONFIG_SERIAL_8250_EXTENDED)
  ^" Y0 [1 o$ q4 ]2 n/ ]#define TL16754_CLK                14745600
" ^' n3 n1 c: W* d7 w& e! s5 `1 b$ `% V#define TL16754_PORT_N                8# W) m  [! Q$ ^6 |
......
" t  w! `7 T& c  t" v# zstatic struct plat_serial8250_port tl16754_serial_pdata[] = {
8 A3 {, ^- {- i1 r1 c2 L        [0 ... TL16754_PORT_N - 1] = {
) M; V7 U/ ?3 r+ k+ h  N                .mapbase        = DA8XX_AEMIF_CS4_BASE,
& U, _) z. A3 w                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |1 Z! {  y7 ^, b  T2 w: Y
                                        UPF_IOREMAP | UPF_FIXED_TYPE,# u: C9 J& D3 R0 }: C
                .type                = PORT_16654,' d, j3 r+ G; Q; e  F% s3 f
                .iotype                = UPIO_MEM,
5 n0 q6 Z+ o2 y, k9 n                .regshift        = 0,
  s. ~0 e/ y3 d7 A  L, W                .uartclk        = TL16754_CLK,
: S; T  ?$ P" F& u        },
5 i6 h1 f/ B' n" p2 Z; g' j        {
" Q' g- w+ J5 M! x4 i- Q                .flags        = 0,
/ h# u' z, @4 m; \" K; v  d  P! U        },
6 {1 O+ p" U' B  {+ s};+ y1 H+ \7 Q8 L3 J9 V6 Z: h

) t/ T5 Z8 H( @4 Y% I+ W; \6 Y......
7 i" a- E5 g$ I9 b/ W8 U! ~6 M* }static inline void da850_evm_setup_tl16754(void)$ O1 d, o& S! ?, p
{8 o: |, A1 V3 Y* \& P/ m3 B6 }
......
1 c4 `7 O' S- |% y2 Y( I, q        /* Configure data bus width of CS4 to 8 bit */
$ B$ `7 Z2 K5 x  r' d: o        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &: i1 d9 J* s+ b* F5 F4 N1 N1 N7 Z
                (~DA8XX_AEMIF_ASIZE_MASK),
' g0 R7 \, S; t8 x' [5 E6 j                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);" P5 u6 G3 g6 O) o& F3 K

! ?3 F2 F8 A4 i" V" Q% o0 V6 v        /* setup timing values for a given AEMIF interface */# G7 S- ^8 _* G: w' w. C
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
" S' s, z5 {: e. q; G+ M% s6 N                WHOLD(3) | WSTROBE(10) | WSETUP(4);  {& O5 M# H) p$ H# g, D
0 P2 D1 |! C, l
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
7 A& w1 V" {! I- W( l        val &= ~TIMING_MASK;
) z+ b) r) z9 B% O$ s$ Y5 t+ P        val |= set;& Z: |+ E! p4 i6 e, W% Y
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
9 N9 i' K, ]8 n. Q% Y0 x7 a2 n......
1 j- E7 N: m5 Y7 w+ P+ G- G6 o}7 c; U& B' |4 X3 V  y6 V+ y/ f) N
0 `5 L* ^* d* ^) ^" m) M" U& W8 E
而且在Menuconfig中已经对
" y$ u1 c3 b/ i( @' WCONFIG_SERIAL_8250_EXTENDED 设置为 y/ K( B2 }4 S/ T5 x: w& t
所以此模块函数是被加载的,+ x: o; p5 }' a9 H+ M+ z
7 A4 i0 O0 M( \6 W* ]+ t' T3 r) c
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-12-14 17:37 , Processed in 0.040536 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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