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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5640|回复: 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 C, Z- Q. |: p+ \, K# h# ?: h# M
        /* Power on the EMIFA */- y* X: A% f% L( h
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,2 O2 z  S+ S0 U& x9 q! J7 Z
                        PSC_MDCTL_NEXT_ENABLE);& m) m: Q" W4 r4 _6 [$ i/ c
% U: F8 d4 e3 Z- h
        /*selects the EMIFA pins for use*/; T* ?. f0 t$ j5 M
        EMIFAPinMuxSetup();
- k0 M5 X, @1 J" n6 ^; N4 f' F$ r( A9 }, {, F! c3 R/ m8 Y/ @
        /*set the buswidth of async device connected.  16bit*/
! k$ Z5 R$ m# h; H6 W6 s        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
" M' S: W+ X% m3 |! Z. o( j                                        EMIFA_DATA_BUSWITTH_16BIT);
& |& U# P% {+ E( j4 U
$ c$ o& [$ O/ x& M( f4 W/ e. i) k        /*selects the aync interface opmode. :Normal Mode*/7 _# K4 k1 C4 C) h" Q7 Z
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
$ L0 n! z- r! H0 j; c0 Z6 Y        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
0 q% H* o- H$ }5 N
; J/ O. P& I# ~- K        /*Extended Wait disable.*/
6 A& [9 K8 Z! Q- D# k        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
* j' H" D0 I4 o& W& D8 K        EMIFA_EXTENDED_WAIT_DISABLE);
; h( ~+ X0 u4 ]9 O  ]* x, w" u
, U( R$ i% l4 h$ r        /*configures the wait timing for the device interfaced on CS2
  H7 M, p& B* Y        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
5 F0 |) f3 H% q( L        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,3 [- B# v( ]/ ]; u
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));
  G) C) ?; ~, `, U/ W2 [
" _2 G6 r% y: r/ q}8 J) G/ r6 k3 b9 L1 C
还有cs4引脚的复用:- w' w# W. P! |) B  B' l0 S$ Y
SYSCFG_PINMUX7_PINMUX7_11_86 K* v1 ^6 m0 m' X
$ s) m; S7 A9 T( D% }
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?
+ J# M5 l4 G+ [5 P' w1 w谢谢!) o: R6 a0 p, G* P5 G

4 u- W( N8 V' Y7 ?# `/ z
% f/ z9 B' E  x1 g( t- B& Q! R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,
  g; t: C' M$ N, G  b' z2 H#if defined(CONFIG_SERIAL_8250_EXTENDED)
4 F% |- v' X/ E# ?' L#define TL16754_CLK                147456004 F  A* p8 M! D1 R$ z8 S. Z
#define TL16754_PORT_N                8
% x; }6 C$ J/ p$ s" M5 ]0 _....... \5 z6 @; B1 r4 x" Z" h. m
static struct plat_serial8250_port tl16754_serial_pdata[] = {# ~- ?3 u& X* E
        [0 ... TL16754_PORT_N - 1] = {
) T- H3 {& V2 V7 z9 \( ]( O                .mapbase        = DA8XX_AEMIF_CS4_BASE,6 o6 x4 \; B& a# P# X# Z
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |8 b* G+ z! x+ u# x+ x
                                        UPF_IOREMAP | UPF_FIXED_TYPE,# W0 y. S! B# R$ ~% X
                .type                = PORT_16654,  m4 U( A: I- H8 h) u7 E$ i$ n
                .iotype                = UPIO_MEM,4 E/ w6 ?% `9 l4 J0 F/ S; G
                .regshift        = 0,% P7 r+ ~, L( J8 A; p% `
                .uartclk        = TL16754_CLK,
6 Y2 E' M% L+ h        },! B9 g: U  ^2 `# c% i3 @( M. V
        {
. l; a: P6 Y& t( s8 G3 p                .flags        = 0," y/ a# _2 D9 i9 [$ G4 m3 G
        },$ O, r1 l7 B+ c+ @! f
};! P* v! ^' F4 U9 |) |# E$ K2 d

9 c; y$ W1 v& |% B5 r......
. n: x$ }& |$ ystatic inline void da850_evm_setup_tl16754(void)
% D1 u  j6 {2 C8 k( p{% ]1 F; j! O: A- c  ], ^/ }
......0 m" o$ T9 j6 R2 H
        /* Configure data bus width of CS4 to 8 bit */$ V8 q" i( g2 E! v0 H
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &) g1 p9 P- w! Q1 d; H
                (~DA8XX_AEMIF_ASIZE_MASK),
9 K  ?3 M$ ]6 {, C9 e" [                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);0 r1 ]8 |3 Q1 J$ q9 h" i) ~

, w# K. Z% A% B        /* setup timing values for a given AEMIF interface */) n# ~) F* u) A1 u/ p
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |8 T! Q$ Y4 i9 p$ F  h
                WHOLD(3) | WSTROBE(10) | WSETUP(4);: s# A" [! ^7 L
. Z6 A+ I& K1 ?  L  _' p( O
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);3 ^* b4 [6 |: a" J+ K: P
        val &= ~TIMING_MASK;
3 P) b' f$ L" E) b' O5 J* y        val |= set;" d  t9 v0 X* g* y. ^9 S
        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);  y0 [( T; Z  L# \; `5 k2 i
......( t& Q8 t/ w; i) v& Z) B, p
}* ~0 a5 p1 f( p; }
5 x8 g: d3 U' }6 ]- H* X% U$ x
而且在Menuconfig中已经对; H2 Z4 f' U: B, r
CONFIG_SERIAL_8250_EXTENDED 设置为 y7 ~# C9 p4 o- N* `1 l9 V
所以此模块函数是被加载的,5 r( V8 l) Z' y; y: m6 E

& d1 k/ P1 n/ N* S8 I  n请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:0 v; e. V& }5 a7 _$ y) O
谢谢了
+ G" w( h0 ^* V  }0 d( Thttp://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:43 , Processed in 0.037796 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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