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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6161|回复: 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) {, F3 Y" _2 y# X6 h3 R: P( u
        /* Power on the EMIFA */
* N, n# ^# W% s* q        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,; x' {. n3 A6 o
                        PSC_MDCTL_NEXT_ENABLE);
6 @) g! C& ~9 O8 x& O( l: _
  b7 |! V2 X  U        /*selects the EMIFA pins for use*/. P8 l$ B% [2 z4 i7 }
        EMIFAPinMuxSetup();6 R; v8 w% S% E! c6 `

4 S: l8 K! ]4 f- l0 y% O6 ~  m2 m        /*set the buswidth of async device connected.  16bit*/
' s# Y$ q" J" d. L0 s* L        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,) ~- \9 t7 U5 L
                                        EMIFA_DATA_BUSWITTH_16BIT);
' e5 I, ~2 J' p2 D  Z9 @$ n8 H1 |5 @; O6 a$ i" z8 D% g
        /*selects the aync interface opmode. :Normal Mode*/
' ]7 m# @7 G) k* I        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
+ p, N, I5 i' h        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
$ ?$ B( ?4 n! O7 M
- X' u7 r4 K" ^$ w$ o; h1 O5 o        /*Extended Wait disable.*/
9 _4 Y, p% B: E6 G' @) Y        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
% b* Q6 S1 U2 C, o0 T+ E% g5 x/ W7 s        EMIFA_EXTENDED_WAIT_DISABLE);
0 N4 g+ [/ a: A% v  u: ~
* x, K4 A3 E1 T+ {' O4 j. Y+ v+ @        /*configures the wait timing for the device interfaced on CS2
9 t2 s4 f* e$ E- q% z" a' w        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/  J) x# H8 X) @7 L
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
2 ^  V" D% ?8 l% e% n                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
; s- Y9 p* h5 Q/ j
% I) Z" L4 v/ r: T. i: F, d}8 |5 m, ^! c4 R, r; b3 J% [- `* i
还有cs4引脚的复用:
3 I, I) {3 K( ?) y  hSYSCFG_PINMUX7_PINMUX7_11_8/ D7 w, p% A7 f. [) w! g+ u1 ~! q; G

" i4 P( t9 }3 A4 D" k1 u+ T最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
6 x6 a( t! U. `  J2 u' X谢谢!
# G0 |8 w% r2 L0 i! e7 b9 b' R0 M+ ^# ^; [5 u/ y0 p. `
9 p. O" q- V9 u7 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
9 P0 U/ o) E, x#if defined(CONFIG_SERIAL_8250_EXTENDED)
( N+ u. Q" A  j9 t% a#define TL16754_CLK                14745600, p! u5 X. X4 n' o$ |; k1 C
#define TL16754_PORT_N                8
. c) c, T& ?6 M5 v9 z5 f......
' D0 x; ~9 P1 Mstatic struct plat_serial8250_port tl16754_serial_pdata[] = {
4 _) g3 c) ~# u' X( e$ }# J        [0 ... TL16754_PORT_N - 1] = {
* J( a3 v% @9 ]! M6 f                .mapbase        = DA8XX_AEMIF_CS4_BASE,  h% c+ a( ?* \7 V+ @
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
4 f* R+ t' d! T8 y                                        UPF_IOREMAP | UPF_FIXED_TYPE,
5 _) ^" _- I3 a  f                .type                = PORT_16654,; \0 F- j  y( n4 k( n( S6 L
                .iotype                = UPIO_MEM,* C8 o6 g/ m4 G! A
                .regshift        = 0,
# ]% l# K: c1 z& A$ k# X. S                .uartclk        = TL16754_CLK,! ?3 q% B/ a; q' d, Z
        },
8 x5 T' y6 i3 i& W/ M1 ~        {4 z! a9 T6 ]# H9 L' ]( H
                .flags        = 0,% w" H6 _0 \, P3 m
        },9 ^- x  y/ x7 j9 v  V5 `" _6 d; i8 T
};) r$ K3 {0 Z* K- `1 |& p- B& A& T( C

7 N/ D/ s% F8 |. t......
. Y* q2 D! I& E. x% F" O- _static inline void da850_evm_setup_tl16754(void)9 p7 r* g7 Q) Z, [5 g2 M7 U& D
{
. }& T# q' y! o3 \4 c' h5 }......
# P" D5 J9 V  o/ n7 q8 w        /* Configure data bus width of CS4 to 8 bit */$ o+ @& S+ U- X8 U
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
  _% r" r" F' \) r# N2 l4 ~                (~DA8XX_AEMIF_ASIZE_MASK),$ h+ X9 _) `3 a- c6 N# \$ Y
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);. \! P& G! |: C- I
; o4 P4 N( k* t$ m! M& m! e
        /* setup timing values for a given AEMIF interface */
, D+ z; n5 x1 Q& F/ G        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |" f3 ?% g1 ]0 J+ D* O
                WHOLD(3) | WSTROBE(10) | WSETUP(4);! @' _" F- e, U# m4 E9 p7 B
7 j' k+ u. `8 i& o
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);0 @# j% e3 u2 v* ^
        val &= ~TIMING_MASK;
% g. M0 ?0 }3 |. V* r/ ^, q2 g        val |= set;- C- X2 H. V9 d0 G9 X7 v
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
% }9 t& E1 V- {# f6 D7 \/ b......( `7 Y* x9 t6 L" C! I! z, I
}
! o8 Q) w4 Y! M1 k/ ?! i) o8 [$ O- z  T& U% [+ j
而且在Menuconfig中已经对# k/ J* q& ~$ ^! t
CONFIG_SERIAL_8250_EXTENDED 设置为 y( r8 d2 I9 T* V0 l* N. m  S3 T
所以此模块函数是被加载的,! R( ]4 \7 Z! i6 g1 I7 u: Z. ^
! \' r7 f* \5 u
请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:/ e2 s; j4 E3 J+ [8 r
谢谢了
! X1 G7 B) `0 n8 N6 M4 y+ rhttp://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-12-14 19:02 , Processed in 0.050520 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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