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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5639|回复: 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) {, e" ~( H0 K% Y- H/ s- b& G
        /* Power on the EMIFA */# N5 `: K1 K- B8 e
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,* j" }' n3 D) r" D
                        PSC_MDCTL_NEXT_ENABLE);8 X1 N- H0 L2 U/ o6 D0 Q, S# l
& Q: M- F( y$ R  q9 Y- G
        /*selects the EMIFA pins for use*/3 x0 q+ J, q  Z8 F/ e- V
        EMIFAPinMuxSetup();4 p$ f  x' \' F2 b) |9 E$ P

7 W6 S3 ~3 P, w; O' _% a* D        /*set the buswidth of async device connected.  16bit*// \7 X+ \. ]) i: V- N
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
+ {4 L& v; x* j) n8 [4 s                                        EMIFA_DATA_BUSWITTH_16BIT);- z. N& Z0 _- ]# a

$ [! |) b. i3 {$ z% Z- e        /*selects the aync interface opmode. :Normal Mode*/" T/ `5 h0 X4 v
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
7 m: l1 v' ~) |0 `+ y8 o        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);3 ^4 V* @6 c8 F7 K3 R" C
7 g; C+ q7 Z; r- \
        /*Extended Wait disable.*/
2 k- w5 y' `4 a1 H8 t' i7 v# `' c        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
) ]; W& P2 Q3 Q        EMIFA_EXTENDED_WAIT_DISABLE);2 M6 Z, `) l5 z: A# A8 O
6 r! K- G/ o! z2 p0 ]! X% X8 D
        /*configures the wait timing for the device interfaced on CS2: |& Q' }6 |' q
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*// v5 f& F" `0 r' w* O1 w; T6 h. b
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
1 H; X5 c: b: ^% x6 s/ O* M  H2 }1 w                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
% G1 m2 `- D, e, T/ s2 \
4 J& n( {* m8 C  h) d0 @% g}
4 t  u& d6 n0 |0 F还有cs4引脚的复用:
2 {9 }" a$ n7 ?# V6 ESYSCFG_PINMUX7_PINMUX7_11_8
% T+ V$ E  ~. v( u
$ r/ L4 f+ M* @( R  N! d; k4 B$ M最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
# m0 f, [& B/ t$ i谢谢!! u. ~, W) K9 Q( e# D: J
! ~" @' n+ r* ^- C! ~
1 ?8 e& z/ t+ P! i8 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
1 {$ E+ w5 R+ W/ v3 E#if defined(CONFIG_SERIAL_8250_EXTENDED)
( f- E5 ~& q. f# s3 |9 m$ g0 W#define TL16754_CLK                14745600
8 x% T) ]" K$ }#define TL16754_PORT_N                8
$ N: p7 D2 ]; w5 |......! Z6 i1 B% W0 }9 X, _2 n
static struct plat_serial8250_port tl16754_serial_pdata[] = {
" t- G4 D3 G/ c% a+ h& k7 [2 [' L/ `        [0 ... TL16754_PORT_N - 1] = {! \+ I( d: H8 U1 N3 n
                .mapbase        = DA8XX_AEMIF_CS4_BASE,2 D' }# s6 v# s
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |, r; k7 R; D) g3 Z1 v, E" }6 |, G
                                        UPF_IOREMAP | UPF_FIXED_TYPE,, q0 Q, p; O8 b/ b
                .type                = PORT_16654,3 ?3 _; ^% I( s5 \2 @
                .iotype                = UPIO_MEM,, X3 F: w1 z6 T6 ~8 t/ e
                .regshift        = 0,* M. u3 E  ]2 A+ R6 ^! X
                .uartclk        = TL16754_CLK,
8 c% Z4 r. B% X+ @" r6 N2 M4 }5 i        },
$ j- L6 h& E7 w# f# G/ s7 [        {
7 j1 P+ Q9 w. `                .flags        = 0,
7 j2 _% Q/ I1 Q; q        },
' g# Z* O- g. b$ N( K" a" N3 P& D};
6 K! @3 W7 [0 [, O4 t# t' Z4 @5 \( n5 X; ^. [
......
( I1 o6 b/ M2 `' |static inline void da850_evm_setup_tl16754(void)* Y3 L, c, i5 [1 `& L
{
6 }$ Q& V0 }* ]* `5 v; J......
6 Z9 v+ o% H" E+ p, B) z0 L( `- D' S. |        /* Configure data bus width of CS4 to 8 bit */
- g3 m) e8 z3 Z        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
! B5 F' K9 b; R) @2 l/ _                (~DA8XX_AEMIF_ASIZE_MASK)," b' t0 j8 Z( I) L3 G( v
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
2 f5 @  ?! K7 [/ S, G- B+ }0 K6 @
        /* setup timing values for a given AEMIF interface */
4 q7 c1 ~) _( F7 D# c        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |- T$ E; f) S' x5 a  D$ M/ F' B
                WHOLD(3) | WSTROBE(10) | WSETUP(4);7 F: `4 S! [# q& k7 C  n: l

. M( X9 K) v( f/ @        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
. G/ S9 o  A8 U# E4 ^( r' ~3 M        val &= ~TIMING_MASK;
; C, `- s6 S* r( U, J2 J        val |= set;; r4 a* L; q+ [& {, N% m' f4 y5 m
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);' b9 n& c6 [" ~5 q5 [# c
......
$ `9 I- n" H5 h4 [4 \( }}
+ |8 W  s/ G9 h8 \9 q3 g8 c& c
# F* H& G2 k$ M, j而且在Menuconfig中已经对
$ P$ c5 R7 @0 ?) dCONFIG_SERIAL_8250_EXTENDED 设置为 y
& S' b+ ?9 z2 `2 Y4 `" B$ ?7 u所以此模块函数是被加载的,2 Q7 ?) d* X" ?* L7 O# a9 F

+ c8 ?0 n0 e$ x$ y  l  ^3 K请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:5 J: y. l0 a; x# q" j
谢谢了
- [6 J0 w& f+ C+ N3 xhttp://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-8-2 22:42 , Processed in 0.038286 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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