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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6026|回复: 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) {
& i# f# J9 k2 D, W% L9 G! C        /* Power on the EMIFA */: O- p) k' n" m0 s  f: W$ j/ O
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,' }3 U8 t6 b# A# `7 J' e
                        PSC_MDCTL_NEXT_ENABLE);
8 v& H; G( j# I( a9 X$ z. H% X% i% x6 z1 b" U
        /*selects the EMIFA pins for use*/
* P5 c) ^/ p3 i& _        EMIFAPinMuxSetup();
7 a4 S- S) \9 Q, K3 c$ A) i
8 P: q9 J( Q* }; H" |        /*set the buswidth of async device connected.  16bit*/
# O" }+ C8 k" }. j% a        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
2 ?1 F4 p6 c4 s                                        EMIFA_DATA_BUSWITTH_16BIT);
8 Z3 p% _/ c8 H, P  F, D- W& x, f4 U
        /*selects the aync interface opmode. :Normal Mode*/
% }6 g; U# B# f; J, w9 Z& }        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
7 S, d$ b: S: L, U$ Q        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);7 k: F, Z- s% @* l/ p
- r2 u7 u- _  @% f! i- f; Z2 H. _
        /*Extended Wait disable.*/  |+ R6 @1 @$ \# D. a
        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,0 Q) Y! V2 z4 ^7 s5 F8 _; B" d; b
        EMIFA_EXTENDED_WAIT_DISABLE);
$ ~; T  Q9 y5 U- @4 e6 G2 ]7 W9 U$ ?# H7 \8 Y
        /*configures the wait timing for the device interfaced on CS2
9 `" y* ?% G1 q1 ?) K* B        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/" h" k& \, l; M
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
1 }9 F' F6 ~/ Q* ?8 W! b3 g' ?                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));4 v- v0 R" b8 S9 ?$ G8 _8 `4 U& w

. T; j2 G1 O! A' ]/ O}
& L& I& [* g  s还有cs4引脚的复用:
8 @* U- Z  k6 [( y# {1 ?0 w# t# pSYSCFG_PINMUX7_PINMUX7_11_87 R2 d7 I' Z/ {' w0 x, X; O$ Y

' l9 y+ b9 c  d3 F1 l  H$ z最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?: N/ }7 b6 i# I$ f
谢谢!
/ l/ A) D' v$ k( @1 S6 L, O
; C2 d* @9 Z8 G. B
2 m# }) r; N! B" g% ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,1 M% H+ P5 X) r0 j& d
#if defined(CONFIG_SERIAL_8250_EXTENDED)  a3 w: d' [! @
#define TL16754_CLK                14745600
+ n/ K. p! j' d* P0 }#define TL16754_PORT_N                8
. E# a7 F2 c) z& y  A* L% b......4 d7 O3 k) }$ ~( T' ]
static struct plat_serial8250_port tl16754_serial_pdata[] = {
* M) E0 T4 y8 l' [( [. z# x$ ]% {, G6 p        [0 ... TL16754_PORT_N - 1] = {6 Y* E& o9 n* r" _* V5 t8 n, K
                .mapbase        = DA8XX_AEMIF_CS4_BASE,2 W9 j. Z. b, Z' m1 X$ [/ f
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |; Q+ ]" H! m! D8 N$ J# t
                                        UPF_IOREMAP | UPF_FIXED_TYPE,# w- M3 ~* h, t% m7 [; M
                .type                = PORT_16654,1 G& n1 v; m  H# o4 {/ @7 {+ @' ~
                .iotype                = UPIO_MEM,# |  T$ K' \" u: b# R) s
                .regshift        = 0,
# ?1 y* [# p1 M& Q                .uartclk        = TL16754_CLK,8 a7 W& G+ z3 Q: r% _' [0 e% ~
        },  d+ d4 d3 ^! H" O. w" q
        {
* J- T. Q8 S5 C( c                .flags        = 0,$ j3 p, d" S7 p, M$ q% D
        },
: {+ ^; r2 n5 c0 S};) y) ^. j" r- _1 d- [9 \+ F& r: ?

: d9 r# V( |; L......4 a# S8 x$ z  M7 |
static inline void da850_evm_setup_tl16754(void)1 b% ~- D/ @* P* f- h
{. @7 `, d$ K( g; S) T9 }
......
5 c% ]/ U6 N  B! G: M! m2 {  w( j        /* Configure data bus width of CS4 to 8 bit */
0 n. X4 U* s" J9 z# U; R: T! v" u        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
3 q# {1 }* @( Y( g9 e                (~DA8XX_AEMIF_ASIZE_MASK),
( w" V& M, W2 A/ J# P1 ]                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
9 S3 O. f1 i/ @* S0 d* r# z1 r0 Z
        /* setup timing values for a given AEMIF interface */7 m# I" _9 Q% A3 d( |/ d6 ^% \8 _
        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |0 Y8 y( H$ I" t) g( d
                WHOLD(3) | WSTROBE(10) | WSETUP(4);
" P3 ~5 S! R( T* d" r; d% ~0 \: B5 T
        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
4 H  T) K  e6 F/ Z3 K        val &= ~TIMING_MASK;; F6 _* S  r2 L! q
        val |= set;
0 `3 j: R4 C/ g$ G/ y1 X0 l        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
* K% T7 q! ^+ r8 z: `0 b# t......% M/ D) {: m) W  }6 O+ A
}5 `  Y' y/ }" G9 e* L1 R# Q- @# i! \

1 f- U% J8 ^3 ^% ?而且在Menuconfig中已经对$ g4 h. g/ K( z- S! H7 n
CONFIG_SERIAL_8250_EXTENDED 设置为 y
! i* E- I7 Z. I4 {% O所以此模块函数是被加载的,
7 F  o/ J1 q) D2 z! j3 D* o
: @1 A1 M  n2 b. G$ n5 Y! C请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:( T% q, o7 @8 A) @' }5 f+ q9 C( E
谢谢了
! O- W; W4 s4 W/ yhttp://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-11-5 17:27 , Processed in 0.039803 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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