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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5422|回复: 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) {. g6 u$ U5 G: V" c  C3 i' g
        /* Power on the EMIFA */2 v  k/ m6 E3 u- k$ c
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,% E% {/ O4 I8 a  V0 @
                        PSC_MDCTL_NEXT_ENABLE);
5 g: l- F( r0 t; T! F
; w3 A9 B& u3 ?4 D0 n' L5 S$ Z  p        /*selects the EMIFA pins for use*/! O2 m0 U5 v; n7 _- W
        EMIFAPinMuxSetup();1 T' s. [# [! t# W! ?2 g+ S1 G) g
. \7 @" ~) ~8 x
        /*set the buswidth of async device connected.  16bit*/! ~* e# r4 `8 T6 K: _9 `- r
        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,* @7 l( T. }4 l( O
                                        EMIFA_DATA_BUSWITTH_16BIT);
$ z- d1 `/ R  Z4 A
. Z5 C- @# S' h2 R+ P' ]8 z  p; m        /*selects the aync interface opmode. :Normal Mode*/0 ~/ F7 S% P( [" d& }5 E* E
        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,$ I  F8 z" ?7 K+ S( p1 k8 B+ J
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
& Z, Z$ i0 q  ~
) I5 N, u+ v) V0 d# [        /*Extended Wait disable.*/. k* \5 Z4 \3 ]7 `. E% a5 T# a
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
( y$ c7 ?$ F& t8 D" v        EMIFA_EXTENDED_WAIT_DISABLE);
0 }$ J5 g7 L4 b" l" K, U5 h
: Z' z% @3 C( ~4 b! O3 m: [        /*configures the wait timing for the device interfaced on CS27 U% w2 C4 A; d0 u" ?5 s
        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/
1 z( K, Z7 p5 `1 @6 y: o; o        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,1 X- g  L* C* Q' k. g( @% C* l+ Z
                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));2 Y( R9 O  q3 I2 ?0 K2 ^) W

7 T4 k8 A9 g' P, I}: M% w/ B) M( g. B+ z# O
还有cs4引脚的复用:
# N: Y. f+ Z4 I7 F" E8 ?# MSYSCFG_PINMUX7_PINMUX7_11_8" I- j/ \) S4 H/ h+ ^2 i) M
8 R1 Y0 \. Y8 v2 F9 t6 K1 L/ H
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?+ Z3 R7 \# V% a8 s( S
谢谢!
6 X" j: m. l+ u" T. U
7 z, C* {) H# L/ F" L; P* U. [+ b' [# g4 i( d) K+ ~- q. A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,+ g, W. D) b: F2 m. z
#if defined(CONFIG_SERIAL_8250_EXTENDED)
: V& f+ G/ c# ~" _* j7 j#define TL16754_CLK                14745600
: m" W4 @" p8 y) f. K+ s#define TL16754_PORT_N                8& X2 t+ w) @/ {+ {( @# b2 U* k
......3 x6 T' D2 Q0 r& j; Y
static struct plat_serial8250_port tl16754_serial_pdata[] = {  y( M. H  U+ m1 ]  @$ H) f/ i
        [0 ... TL16754_PORT_N - 1] = {
! B. w3 q; C2 h5 Y& t6 ^* D                .mapbase        = DA8XX_AEMIF_CS4_BASE,
1 |; U3 v* A9 D3 p                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
/ P  X! O4 j/ a# W9 B0 N3 F- e                                        UPF_IOREMAP | UPF_FIXED_TYPE,
6 h  e* V4 C% |  Z                .type                = PORT_16654,
+ A& K- y3 c& c  f% w                .iotype                = UPIO_MEM,4 z$ ?) [5 F' G6 m% a7 M1 i& t
                .regshift        = 0,
7 e  }5 ^( u* a- N1 z2 @                .uartclk        = TL16754_CLK,/ q" g3 o! K) y$ k$ s8 ]
        },5 ]4 K! N3 E- F* _
        {
; c+ h7 R( h* ~- y1 y& M$ z                .flags        = 0,  J4 [% O% X& j4 n# o: {9 I: Q
        },
6 h/ e3 Q- k5 s};: y+ A# u7 X7 S5 K% f) F, O
2 S8 ]" M& E* C5 [9 a+ u
......: K% E3 b& D0 E3 K* g" L
static inline void da850_evm_setup_tl16754(void)
9 K0 z; N  V* l& B{
% ?. s" X9 x( T+ x......1 F' ?, ?) h8 L0 B* o% X
        /* Configure data bus width of CS4 to 8 bit */
& Z( C, G2 E$ D2 `: q! N5 F        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
! \' z/ ^- G6 M' M3 X$ f                (~DA8XX_AEMIF_ASIZE_MASK),  A2 H3 |. \; U7 F; H" e2 {
                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
$ A& T8 f* A* o; b4 J/ X; o# p$ F3 L3 h1 t
        /* setup timing values for a given AEMIF interface */& N. i: Y/ k& A" f' p9 {
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |7 w% Z/ Y; c" `7 ?' s- R, r5 z* \
                WHOLD(3) | WSTROBE(10) | WSETUP(4);
8 Z( {: q/ t; u  l. w& J( |. W6 e1 @$ H
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);! N1 b- H9 d+ ]; u) _  N/ A
        val &= ~TIMING_MASK;# V& f, N. T* b) H
        val |= set;
! C. A; o/ T: W7 b- `8 G5 D* M& N: ?        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);* J. K% g1 Q$ |( }
......
  z6 y) k4 x; Q2 F: K5 L}
2 [9 w% s3 ^0 m$ Q' N5 P4 H' X! Z! D
而且在Menuconfig中已经对
/ b8 N9 \# A' N- w- _CONFIG_SERIAL_8250_EXTENDED 设置为 y8 W+ W, A) q; T
所以此模块函数是被加载的," Y. R# u; s8 D$ W. J

. \( W- y7 ^. Y请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:  b- |: R  b. X9 x" h* h8 c- K  s
谢谢了
6 |9 N5 ]; |  I0 }+ [3 U- ]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, 2025-4-30 08:23 , Processed in 0.038993 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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