在DSP启动EMIFA的CS4片选来进行通信出现问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6479|回复: 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) {
* @8 s) b7 o( }# t% V9 F        /* Power on the EMIFA */4 A* Z8 T# r4 ], U4 V1 v; l( Z
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,' l, t; C' {% I0 t. A/ Z
                        PSC_MDCTL_NEXT_ENABLE);
9 N: `1 M) X: o- _. c* M  k4 f& a% |' }$ |0 i/ [
        /*selects the EMIFA pins for use*/2 U  I* i: n2 j
        EMIFAPinMuxSetup();
, a/ v) S% k; H; h1 e- `8 T1 A- _, a4 e5 Y1 x6 Q$ m/ J) F
        /*set the buswidth of async device connected.  16bit*/
  P, ]* A9 v. e3 Z. Q7 n        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,3 \0 ~6 K6 ~8 t' @' P3 a
                                        EMIFA_DATA_BUSWITTH_16BIT);) g5 x9 i& a' Z* B. _2 o9 ^
5 j* [1 C8 [5 s- X9 w6 R
        /*selects the aync interface opmode. :Normal Mode*/* q8 m2 ~+ P% y4 {* v4 i/ q( j
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
: R& ^, m4 z, W; X. e$ Z        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
. H7 }% |  m# X
& b. T6 m" f/ A4 e2 g2 _        /*Extended Wait disable.*/
$ {, S( c  ~- V% H5 `  A        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
$ ?8 C# M4 F7 m( G# p. `3 p6 m        EMIFA_EXTENDED_WAIT_DISABLE);
) i& w( w9 w$ p. c) J7 A  Z2 z1 h0 J3 x/ s7 e6 r( }
        /*configures the wait timing for the device interfaced on CS2
7 E# U2 @+ J! k1 l8 Q+ T6 A0 f* Z        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
: N" i, h) B9 B        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,, M# N! f8 ^5 ?8 j8 W0 N9 e- B
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
! w+ J& ]3 `5 d/ l" ~1 M% n- p
}
# o9 [1 @6 n, |/ h# L7 n' v还有cs4引脚的复用:3 }+ o5 x( Z9 e7 P: x2 W' ~
SYSCFG_PINMUX7_PINMUX7_11_8, v) V7 @& F1 Z* k  p3 ?
, ~1 l! V. B# T. {" p
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
1 p# y4 g' O8 i" s( R- |$ ]谢谢!
' T$ P: U% ^$ [* O5 l5 W% K7 X) G: D, z  W& w
" Y4 w- _; y/ P6 g+ |3 \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,6 a: P% B& i$ s0 j$ d
#if defined(CONFIG_SERIAL_8250_EXTENDED)
# \$ u" ^2 i6 \/ ^" }, E#define TL16754_CLK                14745600
  X# @/ o+ c$ a- R0 c7 }#define TL16754_PORT_N                8
* ?- L) `& O8 T: c$ z7 h1 v% V......6 Q9 y. ]' n+ r/ x2 w, p5 `
static struct plat_serial8250_port tl16754_serial_pdata[] = {8 x0 {5 B- _) x* e+ ?
        [0 ... TL16754_PORT_N - 1] = {. T; y. y: Y# z( z: R! b
                .mapbase        = DA8XX_AEMIF_CS4_BASE,
; `' l# M$ ^/ O) a3 [- o                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
1 g: z% _3 R6 ^                                        UPF_IOREMAP | UPF_FIXED_TYPE,4 f; e# D) S) O- I$ w
                .type                = PORT_16654,
* Y. u( f7 z) l                .iotype                = UPIO_MEM,
( Y" Z, b3 d- @6 M7 o  }$ ~! y                .regshift        = 0,0 V: D/ @6 l! S) B4 `+ _
                .uartclk        = TL16754_CLK,& h' r, W3 S/ i
        },
/ o/ n3 e2 k8 x, _- R; ^        {
5 e/ Z  C/ @4 L& u8 _7 d                .flags        = 0,5 M0 U3 @: g+ h' ?/ q. {4 a) t+ ?
        },
( u* V3 t( v$ L6 t" ~};
. Y# B5 E& N% p& }. i2 U- a+ U/ [/ c0 L1 A: ^# _' [. x$ [
......
3 G( U+ H( c' b( k3 Rstatic inline void da850_evm_setup_tl16754(void). n* w  v+ O0 D5 K# ^: F
{
6 w5 v9 z6 |2 R/ }$ {1 c& R......) A9 i! r( u: y# K+ V
        /* Configure data bus width of CS4 to 8 bit */
" C5 H9 Y+ Z# K# X9 Y6 w: |        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &. ~8 t1 E& I4 [9 D$ g
                (~DA8XX_AEMIF_ASIZE_MASK),
) I5 Q; q, \& ^2 X+ z8 ^' K& \" z                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
! l: u8 w9 F  n6 {4 [7 f( A$ R$ x$ b& \: N% ~( d
        /* setup timing values for a given AEMIF interface */
; q7 C# K( i, L" R& n7 S: M        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
! q$ W" h+ X, k+ R  \  V2 u                WHOLD(3) | WSTROBE(10) | WSETUP(4);
" \8 U' a# L/ G* J4 X* R; p5 [! l
2 D2 B2 S0 w! |2 t9 G8 R" w        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);# r. H  \3 e4 O5 i5 N' [4 n% ^
        val &= ~TIMING_MASK;
/ R+ O1 q' Q+ F* S/ G* q        val |= set;
: O' m: O: [; N( |& ?        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
  p! P- P0 t7 Q1 G3 ~( }......
* [$ K9 D4 \+ f" u$ F3 W* c* l- M}
" i  u. O2 |) H
& d, _1 z# i1 z( L. ~而且在Menuconfig中已经对
. @: ^/ F% U; D1 F  S' X7 ?CONFIG_SERIAL_8250_EXTENDED 设置为 y
9 T; {  D7 H  U$ k所以此模块函数是被加载的," f" Q( G, L: {9 i  e) F( F. M

) y1 T6 V8 i$ N3 y9 P; B# P请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:) o) O7 s, y) o/ V
谢谢了
. R% S1 ^: z+ m& |http://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, 2026-3-17 07:56 , Processed in 0.046432 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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