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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,) g4 l/ i, c1 _, N, r' U0 V/ S
input mcasp_ahclkx,
5 R6 h$ i" P9 |4 Y  r' ]input mcasp_aclkx,
  {% b/ h- J# y% \( oinput axr0,4 \4 e+ l; b8 x. Z$ d; x1 Z
" C( y9 S* C' L1 z
output mcasp_afsr,& o& b' t7 a% H5 ^
output mcasp_ahclkr,7 {' h8 g( ~9 `6 e" b
output mcasp_aclkr,: U! d  K6 C! G+ \4 I% w7 I  r! [1 r
output axr1,
5 |7 r, z& e  E9 i0 U
assign mcasp_afsr = mcasp_afsx;
+ a) L) a7 a: K. n" C5 vassign mcasp_aclkr = mcasp_aclkx;: c2 ?& G8 f& v
assign mcasp_ahclkr = mcasp_ahclkx;
4 U& k) Y; v' M2 ?assign axr1 = axr0;

0 w, ^0 p5 F, G" |  W; @! n; L" x- q  \% Q  q  u7 \: v" m. W4 o
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
3 ]8 n+ L! i, S0 x( @
static void McASPI2SConfigure(void)
# B4 {& W( X* w: e% c: r, j{. r4 j+ u; a8 x  J  c
McASPRxReset(SOC_MCASP_0_CTRL_REGS);. ]% I9 A3 `( p$ C8 I+ V
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 K' b, m: h7 r. ^
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
( O4 U3 j% P1 t8 m  I* YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. Q/ c9 x0 s" M# T: a! `McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ I' J9 K6 U' [1 W% f
MCASP_RX_MODE_DMA);
% f5 G0 d/ j. i7 |, k, M: E4 TMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) s$ i" z( c6 z. }1 B
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */+ T3 O# Q4 }' y/ f9 {6 ^
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 e! L  @; V% f% I: M  DMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! l2 `2 b0 d# b! o% t. k5 D2 h* j  m
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ P3 L/ n8 l, \2 [: UMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
* E) V7 v( J+ W$ R( E4 e+ xMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
- P0 a$ f. K0 D5 SMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
2 X4 _8 u2 B- W& L2 zMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 n: M$ ~/ j; B0x00, 0xFF);
/* configure the clock for transmitter */
( a# n. d1 L" b; S3 E& l; I; hMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ N3 {9 \, ^9 u2 J
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 x: R/ H; U1 MMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," ^# I7 _9 i+ ~+ @1 f/ b! U
0x00, 0xFF);
; C6 d3 [1 N) ]3 o; a" `, j% I0 ?# Q
/* Enable synchronization of RX and TX sections */
: E# v* D" Q0 a, cMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- I0 A3 J* @9 l6 Z0 B. a6 iMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 X: L5 C# z$ W
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
6 |  J/ F9 v8 C' t/ L* F: z8 T** Set the serializers, Currently only one serializer is set as, j* @+ O5 {  K4 E* m
** transmitter and one serializer as receiver.
( G8 d3 I2 P' @8 \*/
( ?- e% Q- O9 ~6 CMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);4 X  I( H# U, z# _" b
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*9 R, v9 ~8 ?4 S7 ^
** Configure the McASP pins 5 b- I4 \* ?( K2 r. s( @
** Input - Frame Sync, Clock and Serializer Rx
4 _9 [' S4 h; B- J; C5 ?1 S$ |** Output - Serializer Tx is connected to the input of the codec + v% y# T' i, }1 A" J; @2 H
*/
; e! p- ]' [  }2 x9 x! D$ |McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ s5 N6 O3 M0 A1 X( P# B1 j
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));3 \: f! K# b# G& m. A+ o0 k
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 f) M& F4 i+ N) ?$ z. D- F2 N
| MCASP_PIN_ACLKX
8 s' o4 S8 n" i9 J; C+ Y| MCASP_PIN_AHCLKX+ Z" Y7 T6 _' X+ u8 c
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
: N4 X. _: L. q  y9 ZMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / ]+ r: v/ k0 W
| MCASP_TX_CLKFAIL / F  e; a; \) u3 w( B; U
| MCASP_TX_SYNCERROR
, u6 J) y. F1 e% u, {, l. U% x| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 i! e0 U. H3 |. B
| MCASP_RX_CLKFAIL
7 d4 o- ?+ }( c7 Q| MCASP_RX_SYNCERROR 8 H; u5 X( K+ \& [) x) {
| MCASP_RX_OVERRUN);
- o, W3 w! |2 L) j& |}
static void I2SDataTxRxActivate(void)
0 ~# ]. ?* b$ y/ X+ H5 I- r7 T{& m. F; s/ ^5 u6 X: O9 ^
/* Start the clocks */
' j8 ]4 F+ a. z' VMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);: X% g$ u8 W& r
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */2 ?6 v/ h5 Z& X- h: x2 m# x
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  u# q- T6 }1 M* k# b/ p- @- v
EDMA3_TRIG_MODE_EVENT);: y- t& }. n3 H+ P
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
2 }4 x* e. \) P0 L+ IEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, I# C$ E! O4 I) w' ^" `9 z
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ t4 X  U: R& Z( J; ^2 q# \
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) X+ i& J2 o  D) h4 E" @- j
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
9 `! z* c! Z5 Q' UMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
8 X1 B3 M' Y" {3 A" O1 n, l0 |McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( B7 x5 b+ x4 O* C}
( G" u! n7 t9 ?) D, N& N8 w7 i
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! l" H, e7 F6 s, v' `/ T" C5 q7 P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 07:32 , Processed in 0.041200 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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