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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5812|回复: 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) {7 T0 d2 T- H# y- d# \- F
        /* Power on the EMIFA */) J* x9 x) L3 p- [: t6 ?& E
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,
8 k6 x2 H/ F; ~8 s                        PSC_MDCTL_NEXT_ENABLE);
, I7 x+ F' h' M/ A9 ]1 F% X4 K+ {8 H0 d0 I4 [$ J
        /*selects the EMIFA pins for use*/3 c& M! e! T5 R6 M2 W
        EMIFAPinMuxSetup();( {" [5 G8 f3 B# L: }. e

+ Y+ n: e* W) l2 U/ |        /*set the buswidth of async device connected.  16bit*/$ P$ r: P% t* ?# _
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,5 o5 @7 D! ?9 s/ r
                                        EMIFA_DATA_BUSWITTH_16BIT);9 T( S1 i6 P' Y3 f  U0 q4 N8 k8 i
- D& o2 @! C& V3 t. Y& ?0 b7 c
        /*selects the aync interface opmode. :Normal Mode*/: Z, V% f8 }: g3 q% v0 q
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
% M) r; E$ u) }$ V+ X4 F0 f        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);; I9 k: [9 O/ b5 c( M( j! ]' V! ?

5 [" P4 q" W* t        /*Extended Wait disable.*/, D2 U. l+ g5 u6 s. j2 x& H* Y
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,& p. r& v0 _" s# ~& A
        EMIFA_EXTENDED_WAIT_DISABLE);( D6 n. g# G8 b* F. L

. L6 l2 |# N6 i6 K5 j( e5 x        /*configures the wait timing for the device interfaced on CS2- g) s2 N8 x, d" v
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
) R8 I7 W( J1 I0 k        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
* J8 e* `$ M7 w) _: {0 u! O                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));1 Y, n7 b1 s) e, F9 W: Y
+ R( x+ r3 ?  y- @, U" H
}6 b1 f: H. ~/ s& h: G* W
还有cs4引脚的复用:
) d! u6 a) z6 C6 E; V1 w. JSYSCFG_PINMUX7_PINMUX7_11_8* Z) _; w9 r8 r2 k" d# V

4 Y6 g1 }- A/ o# ?1 D, A! ]最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
8 f7 m6 F0 U" B; k! i谢谢!3 s6 d# D9 b7 r6 F

( h) W' s3 p  M4 }8 Q* g1 }% R& q7 }  G% U/ R  b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,' N* q4 a2 }. }! U' t
#if defined(CONFIG_SERIAL_8250_EXTENDED)9 J5 y- G: V5 F4 v+ E8 M# W
#define TL16754_CLK                14745600
) f& s& U2 g. k3 F8 c+ y' I#define TL16754_PORT_N                8
& X& N$ G" m9 e4 `! J& L- ?......
2 H6 b3 |$ y3 g# ]6 p4 V& K$ _static struct plat_serial8250_port tl16754_serial_pdata[] = {
5 M% G, I! x# T" J2 B. R        [0 ... TL16754_PORT_N - 1] = {) L5 ?0 ?5 J+ Q  k* \
                .mapbase        = DA8XX_AEMIF_CS4_BASE,+ L5 T) D7 H9 `- m
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |: p- R8 D; N- s: n
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
/ G- B6 m1 V$ g. R& m& \                .type                = PORT_16654,
+ |4 ?+ L- [6 Y* b                .iotype                = UPIO_MEM,9 x# I# x5 Z! t* E7 v; t0 }/ F. V
                .regshift        = 0,
3 S5 A% k; J# t                .uartclk        = TL16754_CLK,' E3 D" n$ L1 w* }9 Z
        },
7 b" g! _- d, X        {) I. F0 U: C) h4 }. W$ S
                .flags        = 0,8 w6 @( f4 y  \2 S: _6 ~' O4 S
        },; ^# A- B7 ^; g4 C- u) W7 ^
};
4 ?, B# C$ g1 Y, |4 h8 _
9 W; ~6 R2 p: p7 I- e......6 w. _* U- Y* S1 @. e5 h' }# z
static inline void da850_evm_setup_tl16754(void)3 z% C! m& ~6 e, K& @6 y5 y; F
{
) z- Y* U3 `1 }5 u! e( W......
8 D$ b0 {2 w, W5 @. D' h        /* Configure data bus width of CS4 to 8 bit */- q0 m1 j: e5 g+ T( V1 z
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
+ Z0 _0 P: U- m# [. [& [                (~DA8XX_AEMIF_ASIZE_MASK),8 L0 F! c7 G5 f
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);* s- w6 m: q6 I/ S1 n& e
; y% I- h0 E  z
        /* setup timing values for a given AEMIF interface */! v# w" z; k3 Y7 m
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
! W0 j; r3 b* d( \; A% E" e# h                WHOLD(3) | WSTROBE(10) | WSETUP(4);9 j, n- z% W# X. A+ P

) e- h/ i4 f9 @" c; X        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
+ B, f) J9 ~' l. ?8 R% v/ a        val &= ~TIMING_MASK;8 Q5 L1 ^% j1 [9 T
        val |= set;: J# w. u& ^7 E
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);1 B5 R/ g" b) Q1 n5 x
......
  D5 @$ Q" S0 z* \) P% u# N}* ~* S4 C% Q8 D9 g: k, A
: q/ M* u' L. w' p- G
而且在Menuconfig中已经对
, u6 g7 C1 {1 Y$ D- q( gCONFIG_SERIAL_8250_EXTENDED 设置为 y6 l/ U( L; ^% T+ M( h& A
所以此模块函数是被加载的,4 E6 W' M! |+ S# r1 A
' ]( {  g: K# f3 I0 _
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
) G' R% ]. Q+ L0 N  b8 L谢谢了
% M( r2 O; _& w  E- F" O! ~. }0 Uhttp://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-9-18 16:49 , Processed in 0.039345 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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