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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5813|回复: 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) {- Y& [% |8 r, J: `8 D
        /* Power on the EMIFA */
. p* z& t$ X& t4 \        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,: P1 Y1 k3 J4 p
                        PSC_MDCTL_NEXT_ENABLE);( {8 U4 u. y& p: ?; v
7 o2 j  V  b5 ]5 W/ p( C1 j! }' u$ V2 D
        /*selects the EMIFA pins for use*/2 ~; g, c( N: k; R
        EMIFAPinMuxSetup();+ W  M, M: B3 C# U6 H& D

& G1 C6 A1 x2 ~        /*set the buswidth of async device connected.  16bit*/: y# a" w  o! Z/ o+ F) R2 |
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,- O6 j3 E0 o7 \
                                        EMIFA_DATA_BUSWITTH_16BIT);4 ^. D+ K# M2 ?: y
! z- S7 C- _3 M1 ^& ]/ H
        /*selects the aync interface opmode. :Normal Mode*/" Q5 r9 s& a. u
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
0 U, |% I4 U/ o1 B) C' d        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
$ J2 [7 E8 C1 w$ \" j& H7 K# J9 ~1 `1 j2 p
        /*Extended Wait disable.*/
, {- {% \- @- d- N% \        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,: ]* u. G8 r9 t9 p5 v4 T- I: w
        EMIFA_EXTENDED_WAIT_DISABLE);) o3 p( a/ M. V; t9 g& ~
+ b. T2 F' y6 I- r
        /*configures the wait timing for the device interfaced on CS2
, j6 K2 h# O1 i; ?/ s        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/0 W' O, R0 w* h$ U
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
  E) q  r- K0 f: K                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
6 ~& W  y5 ~5 R1 j: I; v) f5 U0 M6 U
}1 F% w0 a% K6 W/ }! |* A1 q% \; F
还有cs4引脚的复用:
4 r8 f, r8 l) O% aSYSCFG_PINMUX7_PINMUX7_11_8
- v7 S' A, A  w) Z" ]- Z- `; g! i# T0 t+ e
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
) [7 s2 z$ V$ w( \2 j谢谢!0 J  P( S( t3 z# A" u

6 D- G2 ]: C+ v' z
: E) @+ p# v& k! F' H* o) {
分享到:  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 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
/ }, j; Q; q0 O( x% @谢谢了
' U9 d; C4 _$ e  H0 W. M6 Nhttp://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的操作,
6 m4 D, x7 h, m: a! k#if defined(CONFIG_SERIAL_8250_EXTENDED)
  \. y" a; V$ ?; J#define TL16754_CLK                14745600
7 I4 P3 D1 Z# W' [- \#define TL16754_PORT_N                83 A9 T1 g9 J( Z5 y: G& [  [
......* }) @( Y6 u/ j' W5 b% Q- T/ B! ~* J0 `
static struct plat_serial8250_port tl16754_serial_pdata[] = {% D5 S& [/ o! M9 V: {
        [0 ... TL16754_PORT_N - 1] = {; j- e& s2 c6 {/ ?1 ]* s/ v3 j) f
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
& v3 s  q+ ^0 }6 J                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |) D' t/ J* \. O& n8 @5 N
                                        UPF_IOREMAP | UPF_FIXED_TYPE,3 a! T4 i! _% q9 `# R+ S
                .type                = PORT_16654,: j* u# G$ w% q$ d' O$ d& R
                .iotype                = UPIO_MEM,+ ~* U: ~5 H- X1 I
                .regshift        = 0,
1 f6 Z+ C1 t( ~0 X                .uartclk        = TL16754_CLK," X, J1 r$ r. u7 o7 e& ]! j
        },0 E/ Q- F3 `' Z8 I
        {5 {9 r, q, e3 S$ X* k6 M+ K
                .flags        = 0,
5 {' d$ B" O3 F9 y4 B; |        },1 S% p6 z2 S: E) B6 l& [
};
' E0 d; H; r. Z0 l- o
" N# T7 s' @2 G......; {* U! R+ n7 p; e/ P4 V9 {$ a! v
static inline void da850_evm_setup_tl16754(void)
4 M4 J. F) e$ K{
5 N  k7 W4 G7 l0 R& J......! j4 P3 r: _. x3 g- M  w! z
        /* Configure data bus width of CS4 to 8 bit */4 u5 @# P- h+ O
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &( Z1 i$ F. z* i2 w) Y! h2 z
                (~DA8XX_AEMIF_ASIZE_MASK),
$ x1 d3 R% ?9 s/ U6 `                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);2 T) e. s3 s& u" t

; n4 O* {! C4 W$ N1 ]; S" G' g+ C        /* setup timing values for a given AEMIF interface */
! M9 ]8 c( `: T- G  H" X        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
9 q  c. E. d, l) p% w& L- y7 W                WHOLD(3) | WSTROBE(10) | WSETUP(4);
( Z8 s: v: H& F: o: e! J7 q2 Z! c5 F, ?
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);7 F& k! u1 E& t
        val &= ~TIMING_MASK;
+ g' Z6 C& }* m8 Z! H$ X        val |= set;2 i2 }7 _' n- |
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
1 H' d* [+ [8 |# r......& w+ ~& P- u5 w3 R. j9 \
}
7 d' k* [  s+ H0 j+ G" Y* b% H2 f7 Y& t4 A/ W* i9 u. c) b( l, |
而且在Menuconfig中已经对
8 \4 f: {3 Z/ N7 I, K2 }& XCONFIG_SERIAL_8250_EXTENDED 设置为 y
$ L( Y' G# x3 P. R1 c( h所以此模块函数是被加载的,
9 W" c; {8 R! u' S3 Y* c3 B6 b0 h  y* j& G
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-18 18:12 , Processed in 0.038889 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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