MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8696|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,4 M" o9 t& x1 d9 K) w
input mcasp_ahclkx,* g/ D- x9 l: A& j9 f
input mcasp_aclkx,
3 P& i. i; j7 u% ?- [input axr0,) R- h/ s+ s) Q; Y8 D# X

: b% Y% @& `0 i. c* [7 g8 routput mcasp_afsr,
7 m7 C+ E# [4 J% G0 n! c& ~output mcasp_ahclkr,
% ^$ c3 J9 i% R, G9 g$ Voutput mcasp_aclkr,
( p, V3 Q. g; u9 q# E9 _4 y' }, e% uoutput axr1,1 b+ _6 V) {; c) E6 q& R+ Q
assign mcasp_afsr = mcasp_afsx;
9 Q  I4 H. e# U& q  C; Massign mcasp_aclkr = mcasp_aclkx;2 f; @, [3 L0 U' K
assign mcasp_ahclkr = mcasp_ahclkx;! F5 W& K& B$ T$ C6 e1 g4 z; m: _
assign axr1 = axr0;
% x2 e. _. s- |* C" v$ _3 y
& `: [3 F; \6 v" a) d3 ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

' F' U  W3 ^% O% A
static void McASPI2SConfigure(void)
& H  w6 n3 b  q3 Z$ M; q) X0 l- @{+ v( o- f) w& A2 r, }" Z
McASPRxReset(SOC_MCASP_0_CTRL_REGS);/ h7 l/ J. g% s
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ v& ^2 |9 M2 Y' x# `: e* I
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 @' P5 Y- M0 D% [: F% B
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
$ M# d, x* r- vMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 S4 F- m* @  W; _1 C* JMCASP_RX_MODE_DMA);
  y. o4 E* i# o( |) RMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 A4 `7 ~; @% [2 A- @) |MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, E4 F+ C# }+ ^4 f( N  DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, $ e$ w/ B3 `/ ?3 f' G/ P0 e
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 r+ k/ ]/ N+ [$ K: {3 d5 e7 BMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& S7 R! U0 l6 o: P" i6 OMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */" E0 _. P! ]/ \/ T
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);2 U) y3 ~" e) _2 A) ]8 W
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 1 v# ~) v- A4 M, L' B* j% P
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
+ A) P/ C: r) y8 C0x00, 0xFF);
/* configure the clock for transmitter */" Z( t5 T4 `; ^- n9 {2 G+ n+ ?
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! j& d" X) v  r& g
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 4 }4 \) h( Y# O$ ^
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,6 Z2 Z* I$ `( V  v0 ]
0x00, 0xFF);
& u$ M6 t' f( _0 t  C. n3 J6 m
7 z- L8 h5 z" M: E6 m. E; |/* Enable synchronization of RX and TX sections */
4 l! v. j  J' z9 e8 I- D  aMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */# v$ s; L! V9 D5 x
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; X% ?: b6 ^4 `' }2 t  c: OMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' ]9 ~+ `6 }- E" m4 w# Q** Set the serializers, Currently only one serializer is set as& W  L% q5 R, \" h$ Q4 c
** transmitter and one serializer as receiver.( _+ J6 ^* J( o  z: C- x) I! S
*/
; A/ n: M( j5 k- tMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);  Q+ S/ F+ g' P4 u5 p! z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: z/ K0 e7 I/ f7 s. v1 `** Configure the McASP pins
& n, D  ?8 U2 _9 I7 \8 n** Input - Frame Sync, Clock and Serializer Rx6 T5 [: \" M! M* e! s: m3 O
** Output - Serializer Tx is connected to the input of the codec 4 v8 x7 }; B# [  e$ {3 c' g
*/2 _9 K. L8 O/ x4 a% x  V
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, K) y8 l" ^' x7 _
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 _" ]2 T6 ]$ S8 X/ L& N
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
1 G5 C* ?' {, D: J: ~$ || MCASP_PIN_ACLKX
# c$ ~$ ?; |% b1 {  D5 {| MCASP_PIN_AHCLKX; p$ G' q6 I9 a. z2 m/ Y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) V% u8 b- p! L
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
* G/ `5 O8 j; Z& {) h( [| MCASP_TX_CLKFAIL ) Q' T( F  v2 w8 G2 y, o: s7 X8 o
| MCASP_TX_SYNCERROR
6 t0 R7 h8 D* S8 \* m| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ! x3 O1 h0 i0 t- A
| MCASP_RX_CLKFAIL* O! y) \5 R8 }7 ?4 P
| MCASP_RX_SYNCERROR
( I% P7 x* _3 V# y0 T- h4 _| MCASP_RX_OVERRUN);
: v* b% Z2 d* D( y( C: ]: K}
static void I2SDataTxRxActivate(void)& |8 i1 j  `4 r/ {  p
{& a7 ?( u1 P  a& O
/* Start the clocks */
6 ]& l7 k" w5 G6 v' ZMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 }& b) l) l! y' i$ r5 ^5 Y' R8 kMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */# @5 M* z3 F! O( R4 O" X$ _
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,0 w& b# f. `$ A8 R# P  S4 M, ?; V
EDMA3_TRIG_MODE_EVENT);
3 Q* ~. A7 g- `( m/ X  Q' LEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : A0 l8 ?  ?+ S7 d+ w8 I: x
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* \- M* a/ B) |4 ?0 ?( ~McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% I. x/ s6 T) \5 A& DMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */" |& R, V4 c" b; o' {5 g
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! \3 [, u; S" A
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
- J& w) k, l- p2 e6 t6 sMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
8 `4 q4 L! Y9 T: R1 j}
9 g  p1 z2 m' t: W
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ b  \2 A+ M, t2 p4 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-12-2 07:15 , Processed in 0.037514 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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