在DSP启动EMIFA的CS4片选来进行通信出现问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6307|回复: 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 r  i+ e, H2 c' ?" M
        /* Power on the EMIFA */
; {8 S0 T% D* p% E        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,) P( q/ A) Y! V1 B
                        PSC_MDCTL_NEXT_ENABLE);( f0 G" ~: b+ ^! f# X
$ k" d$ p  g3 f
        /*selects the EMIFA pins for use*/, V# C+ p$ J) E3 o$ i# g5 \/ i
        EMIFAPinMuxSetup();0 B: R, r9 x" R5 j0 Y& B5 K
$ i% Q- _( J- _9 \
        /*set the buswidth of async device connected.  16bit*/
$ j* l* z7 h& b- x        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
$ g' \/ [- f6 f+ k. W1 O# E                                        EMIFA_DATA_BUSWITTH_16BIT);& M& Q! t9 x4 d# m  p

: [; n" N) t, ]        /*selects the aync interface opmode. :Normal Mode*/
7 H9 M' e) G# ~  Y3 S; o: R        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,, b( T' M2 j  V, B$ N" u0 ?
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);' [/ G0 }7 o& v" k1 u& _  |+ N: [

1 P6 v9 N: y1 t; @* J        /*Extended Wait disable.*/
) T: P: j0 q* p, V7 V0 Q; h        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
7 y1 Y! t- [/ Q: M: F& t$ [( c: q! j        EMIFA_EXTENDED_WAIT_DISABLE);. e5 M  y7 v3 e4 n& g/ Z

8 ]# b6 c2 k0 R5 q' G        /*configures the wait timing for the device interfaced on CS2) ^% k1 d1 ]6 d% g0 Q+ o8 U. x
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/0 [' c/ h4 t% F" A
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,1 @) |& h0 A  N1 Z9 K
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));7 N/ c: z& h7 b! D- |

# C+ ]2 R* f# L5 ^2 h" t# ^}& D4 u6 G3 z6 C6 m4 @
还有cs4引脚的复用:
) n5 v% |- {* k! x0 ?; ?# b2 PSYSCFG_PINMUX7_PINMUX7_11_8
/ s1 |$ V+ s5 y! }% k, r2 t: S: j2 S, X
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?/ i* z1 r5 u5 C! k! |# M" ], D: b
谢谢!
- f) y) T0 q, l+ w" P  ]
, c& Z5 k' N: v- L5 C2 o) q* @
' l0 Y% m" [6 I) b7 i7 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
* W. h1 ?% c1 V#if defined(CONFIG_SERIAL_8250_EXTENDED)9 x1 M. ^! D, k/ `9 s  K
#define TL16754_CLK                14745600
" D2 |! ^  I9 C  M, i3 s#define TL16754_PORT_N                8# o% j* l6 t4 g/ X# _
......& b: v3 f6 L9 o; m
static struct plat_serial8250_port tl16754_serial_pdata[] = {
" }  s' T+ P+ N" S        [0 ... TL16754_PORT_N - 1] = {
! `2 F- \! K' ^9 h                .mapbase        = DA8XX_AEMIF_CS4_BASE,
( O% Y' _% i4 \% @2 t$ O                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
* \5 \1 D1 G; p5 Z, M                                        UPF_IOREMAP | UPF_FIXED_TYPE,
) @: k8 a2 m! x; q* q% d                .type                = PORT_16654,
  _9 f1 R: s/ e  j% U- Z                .iotype                = UPIO_MEM,
1 n1 L" B/ {9 |6 p& X                .regshift        = 0,- @# M( L5 a/ a" s0 P
                .uartclk        = TL16754_CLK,
# d% V9 B" a2 J4 }        },
; l; r) _4 q6 G3 l        {% Z7 @6 O' t0 ^1 m4 ~3 V9 V
                .flags        = 0,& u# A1 V) J  T# Y
        },
* ^! r$ m5 T4 N6 t. M};
3 N! D& i4 Z: k5 h( l2 B5 F) J  }$ _9 k5 D* w
......5 V8 H) X/ s- @# X5 P' b& E( G9 {5 O
static inline void da850_evm_setup_tl16754(void)
/ e$ J; {7 i& H9 N{
$ g6 T( a+ [: G" U......
5 u  |% j$ U5 |% Q! |        /* Configure data bus width of CS4 to 8 bit */& g" F. Y* ~0 J, o1 ~
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &9 A: Q$ ~8 w4 s$ k- b+ F) v
                (~DA8XX_AEMIF_ASIZE_MASK),/ U  |4 F: g4 z4 O$ U
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
' M( q. f* R! j  N6 R8 B4 N6 Z2 z2 {8 \) S1 E& V1 Y$ I
        /* setup timing values for a given AEMIF interface */. f8 e- C) O. C! F( S, d
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |, f3 @3 w$ J) @$ }! ^. T
                WHOLD(3) | WSTROBE(10) | WSETUP(4);+ o' b/ O/ t& ^
0 t9 k- g, @3 m* K7 D$ o% e
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
$ X, Q' |6 B/ b; v$ S0 @/ x        val &= ~TIMING_MASK;# }% C0 m" D+ |* w8 \
        val |= set;3 C3 T% z7 E+ g: C4 p
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
5 T+ [3 ~& s2 n- A......
: C! ~) v8 t8 [2 S}" A) i2 ?) B( v' Q( N+ ~4 M& x3 H
9 F$ {5 r! v+ m2 X8 ~" u
而且在Menuconfig中已经对
* \) W! r5 M+ ~CONFIG_SERIAL_8250_EXTENDED 设置为 y6 q# {7 S7 G$ E9 Z# _3 E# T6 ]
所以此模块函数是被加载的,
7 `9 \, r& G3 B2 o, {0 F: H5 f5 @1 W* l2 l7 m- C
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:4 n5 D8 w5 y. D( P( @
谢谢了3 p: U+ e) d- g$ C+ Y
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, 2026-1-31 02:05 , Processed in 0.075782 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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