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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5815|回复: 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) {
$ l' |; i. r' n2 h* t; D        /* Power on the EMIFA */
8 J# k. Y3 q4 M1 N        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,! x/ P& a. j9 b% x( A
                        PSC_MDCTL_NEXT_ENABLE);( l1 |, j1 \; ?, u0 ]7 ^7 [

+ s8 O- X; G( r  a9 f        /*selects the EMIFA pins for use*/
- v( M5 J- u# y. Y        EMIFAPinMuxSetup();
4 U8 i9 a# V' d/ @3 U: _9 Y" m& N. p. p, j
        /*set the buswidth of async device connected.  16bit*/
# k' {  V' J* @+ D! W4 P8 k        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
! ~6 ]5 w& g8 T$ @* {) h$ L; d                                        EMIFA_DATA_BUSWITTH_16BIT);
$ s5 O. V6 _: H* D/ ~" t  ~6 F% s3 Q/ z# g8 \. t
        /*selects the aync interface opmode. :Normal Mode*/& M7 f! \+ E9 P  X
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
7 C: M! r5 E+ H1 u* k# z        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
6 Y. E0 T4 \$ [- w& t- ^; U+ ~$ f: U: ], k; Q# O' T
        /*Extended Wait disable.*/: d0 h: k: P; h# O+ r  s: M$ x
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
. d" T. w, P) S) t' o- S        EMIFA_EXTENDED_WAIT_DISABLE);6 C# m" p' ~7 }' w; d5 N+ l2 p) Y  @
# L- X) ~; J! F0 Y9 h
        /*configures the wait timing for the device interfaced on CS2: o( m0 }( D1 H, F  H
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/! V1 U) ?# i0 P0 t
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,! V' X7 ~1 t# y  ]. b" U% M. J
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));" z) f$ Y, |% b" k3 f: @. h
3 b7 x! c4 U. }: Z7 j% x1 I! }
}
6 w4 R$ Q( J$ R+ d% ]还有cs4引脚的复用:3 W  G1 R/ o" [5 c, {3 [
SYSCFG_PINMUX7_PINMUX7_11_8
8 [; i! l) l0 E0 [* {  t4 x  ^. `6 `& Q
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
8 W( U  i3 w( O- X/ M% U1 K谢谢!
" q$ O) v3 l  v- k0 C1 o: P& r. ]8 m9 S

# y4 S) n7 Z# t6 Y2 f+ e; {" s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
8 m( p& O7 p' G: Q/ ~#if defined(CONFIG_SERIAL_8250_EXTENDED)4 t, r! R2 m& e' {4 p7 g
#define TL16754_CLK                14745600
+ P+ ~2 d/ c- ?8 H  }; G#define TL16754_PORT_N                8
4 l- d1 V! n9 F; i! j/ Y. b......
+ j: D  G- y# N$ p" o2 Bstatic struct plat_serial8250_port tl16754_serial_pdata[] = {! ]. e+ K& l3 z" z- V
        [0 ... TL16754_PORT_N - 1] = {
% e9 h& P4 ?4 b. T+ u- q" P                .mapbase        = DA8XX_AEMIF_CS4_BASE,* W! E  ]7 A0 m: X6 X9 x/ Q
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |' a$ }7 e- w2 B: K
                                        UPF_IOREMAP | UPF_FIXED_TYPE,
1 ]! [3 r, Y5 a( q9 V                .type                = PORT_16654,9 }) v+ E1 n9 v
                .iotype                = UPIO_MEM,6 @/ _4 g* H9 f$ y9 r
                .regshift        = 0,
$ s, ~8 `4 U% {) X$ U* F" U                .uartclk        = TL16754_CLK,
, p( Z! S) T0 b  P5 v2 W        },! v8 C4 [8 ?- r
        {5 ~  Z. I8 n' r- u  p( l* n  N1 e
                .flags        = 0,) j5 a$ r+ }5 U% L3 b
        },9 i, y+ r- z" l5 }) Y3 T) f" K4 C; ]( P
};
7 z% D" Z% S5 w" N5 I- o
' s7 X. H; @8 W, `......
- ?5 p( ?0 h9 w: h. c' {0 j/ jstatic inline void da850_evm_setup_tl16754(void)
. c  A! ^& r& O* Z' [/ |{. Z% |( F2 }9 c+ Z
......
1 p( Q( A. p( J        /* Configure data bus width of CS4 to 8 bit */
5 e( w$ w2 j, M$ i        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &3 k: L1 p9 w* o
                (~DA8XX_AEMIF_ASIZE_MASK),: D2 d# U/ K9 {) n: z# g; F
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);$ [% A* z* u3 f

  G- ?: v5 \5 R) K        /* setup timing values for a given AEMIF interface */
3 G+ h/ ^) x0 b; |        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |$ i& d( e. j2 Z2 F
                WHOLD(3) | WSTROBE(10) | WSETUP(4);3 R4 _. ?: C$ m. n+ m

" b5 G( `5 j. b$ P        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
# t: S7 [* s# o4 `6 F, B  @        val &= ~TIMING_MASK;
" C4 t' }+ ^; H1 z% r, o        val |= set;
$ S# z& _* `3 D: q4 N- O        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
$ v3 y$ H! ]$ u; ~......
9 d2 y. t2 ^& h) M}
( v3 ^5 Q8 H7 c* y
7 {- n! o" G1 M  f4 x. O+ C而且在Menuconfig中已经对
5 v& F1 a# F. \, @+ f3 S& n0 }9 eCONFIG_SERIAL_8250_EXTENDED 设置为 y
0 Z+ Q8 I1 @  ~/ _+ U所以此模块函数是被加载的,
: ~, ^8 ]) _* Y" _9 g/ j8 \
' m1 ?! ?1 e6 y请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:
6 ]/ N/ I  I- [- ~( g4 a谢谢了
% W) t7 W+ {$ j7 Ihttp://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 19:31 , Processed in 0.040827 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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