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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6172|回复: 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) {
! j5 W' l  K2 `9 f1 Z' r+ D8 ]        /* Power on the EMIFA */% j1 y% _2 w( F( f1 G
        PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,6 X- c, @- G' J$ {* w
                        PSC_MDCTL_NEXT_ENABLE);4 w2 h5 B- T9 {9 y

; r. S2 n! }. Y0 m7 x3 N6 S7 ^        /*selects the EMIFA pins for use*/: {' e1 E6 F  y7 e. V
        EMIFAPinMuxSetup();& b. R# h- m4 l! u5 j( z
( Y0 L0 g- [4 {* c/ i
        /*set the buswidth of async device connected.  16bit*/
1 G! v9 Y" g6 A- Z: ]+ K9 _3 S7 f        EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
: ^! A+ H! ?& `4 \( C                                        EMIFA_DATA_BUSWITTH_16BIT);9 E0 P  @# N3 C" ^

2 @# F, J+ m1 ?5 O        /*selects the aync interface opmode. :Normal Mode*/
6 P. U" P; j2 l, z' d        EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,  L( I* M: L" I( T" ?5 C
        EMIFA_ASYNC_INTERFACE_NORMAL_MODE);+ w. a# p0 s  G! g
/ J. p6 r: U( }7 T
        /*Extended Wait disable.*/
9 ^. r* b- P6 F$ g        EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_4,
. U2 g, J& I: @% N        EMIFA_EXTENDED_WAIT_DISABLE);
+ s, m* m9 y: w5 t. b; p- ^! o$ p4 f7 ~* P1 c
        /*configures the wait timing for the device interfaced on CS2
' P' Y5 h, u. e2 g        * W_SETUP/W_HOLD W_STROBE/R_STROBE W_HOLD/R_HOLD TA*/( p) F" A& u# K* V/ o
        EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_4,
) `3 f2 t. v9 ^* P9 h0 z" A                          EMIFA_ASYNC_WAITTIME_CONFIG(4, 4, 4, 4, 4, 4, 1));. @4 O, y; ~# |$ q
4 l4 F! k6 v+ w
}
9 [+ k5 c# M4 `8 e: N: a: O" F还有cs4引脚的复用:! D5 ]$ Y/ Z# h9 t1 Y: y
SYSCFG_PINMUX7_PINMUX7_11_8; w# c. @$ T! r( a3 ]3 u
6 q1 Q4 }6 y) J# ~0 c. w: Y
最后结果还是不能通信,请问下,对于EMIF使用CS4片选,还需要做其他工作吗?6 o7 V6 `& H' z' n6 V' Q" O
谢谢!/ y# c  ]& C& [6 [0 C1 [

5 V" }3 Q9 v( I  K
/ B  \0 V. A! H$ ~/ ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
沙发
 楼主| 发表于 2017-5-31 17:39:17 | 只看该作者
我看了一下,在创龙给的linux-3.3内核中有对EMIFA CS4的操作,: j- `& X) q# K6 Y
#if defined(CONFIG_SERIAL_8250_EXTENDED), }; n- S5 x/ T5 j, T* C; V
#define TL16754_CLK                14745600
- |! ^# P+ C- J4 m% p( O) X#define TL16754_PORT_N                81 @& o& U6 S+ U: i# j
....... N8 b( X  u) g& @6 ]& }8 ~& `
static struct plat_serial8250_port tl16754_serial_pdata[] = {
( T6 h6 u5 L$ r  x& M6 e- v" ?9 t        [0 ... TL16754_PORT_N - 1] = {
) d4 p/ F1 G8 p2 x% V) R                .mapbase        = DA8XX_AEMIF_CS4_BASE,3 t* l/ H  g5 Y9 z
                .flags                = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
8 w1 J( R: r/ w) X  H3 X; q! }                                        UPF_IOREMAP | UPF_FIXED_TYPE,, K4 W' B6 I6 E' q, r5 I0 `
                .type                = PORT_16654,
, }/ e6 @/ `9 e# F" S) g) b# S                .iotype                = UPIO_MEM,( r5 {3 e* `2 y# }6 u1 H9 O
                .regshift        = 0,
, x% N8 \' R& G: P/ f- R- i                .uartclk        = TL16754_CLK,
4 v- O1 ?% n* w2 }4 L: F- n        },
0 `# K" }' {- i$ P0 B        {
2 K3 X8 n2 N% f. R2 z: K# w                .flags        = 0,
9 @. {2 a9 Y2 L( I2 Q( X* O        },; P6 N1 M+ L8 B: s/ k
};
: g& t, c% |9 f
1 G/ Z0 M2 X. m- c$ d6 R$ v8 S3 }......
. [7 }- }7 K; T0 Q) T( O$ \+ b' nstatic inline void da850_evm_setup_tl16754(void)# z; y& v& w+ N1 ?$ g' v* H; `
{
2 B. y) \4 }2 H8 R0 }2 N......; z' D0 Z2 j7 L9 S- C
        /* Configure data bus width of CS4 to 8 bit */1 W  @, n  L# b) `
        writel(readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET) &
+ g5 `! a" w4 `7 n                (~DA8XX_AEMIF_ASIZE_MASK),
' Y0 n: G" U- p! l! J3 N, e                aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);; ]+ G+ ^) p- x
. x! v0 B8 u% m2 h5 f! `$ F, T
        /* setup timing values for a given AEMIF interface */
3 l2 A5 I( a6 e$ m        set = TA(10) | RHOLD(3) | RSTROBE(10) | RSETUP(4) |
0 e( z  V. W5 e                WHOLD(3) | WSTROBE(10) | WSETUP(4);3 `: @$ o6 c7 v1 m- \5 Z$ }

" E% W0 b" q8 ]5 k9 e# W        val = readl(aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
( g3 G& u8 Y2 Q0 S( m        val &= ~TIMING_MASK;
9 |) A0 C6 r3 w# B+ x        val |= set;
/ T9 T6 A/ I! }5 |& L        writel(val, aemif_addr + DA8XX_AEMIF_CE4CFG_OFFSET);
1 p. z3 S9 V5 T0 G9 e. M* y......
- o% `3 ?6 J- \+ u+ |' `  \4 v}
8 b8 w- z! {8 R$ O' W7 P: s/ U! I  L, G6 q/ A
而且在Menuconfig中已经对
$ Y1 ~' p' j1 u$ W7 ^CONFIG_SERIAL_8250_EXTENDED 设置为 y
% F! n9 v0 v7 Z! q0 \8 e+ q所以此模块函数是被加载的,8 M% n. k! {& X) Q

+ ]- G: [$ ~% |; V; K6 ]- _请问下,  serial8250 是给哪个创龙的芯片用的?? 谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-6-1 19:02:17 | 只看该作者
没有问题了,最终有此问题是因为以下帖子的原因,具体解答也有:9 ^7 Y9 s, L9 T2 C3 X9 Z2 x7 p
谢谢了
% X4 X% B+ H/ }- n) ehttp://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-15 05:42 , Processed in 0.039997 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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