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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,2 X! @. I& o1 U
input mcasp_ahclkx,0 f' b( V" N3 j1 U" y) n; Z% E
input mcasp_aclkx,
% j0 o( o5 r6 X3 winput axr0,
2 q. @+ \! f  u  _7 S1 z5 b! h% j) X3 t1 Y# L' Y; j- i0 Y2 A
output mcasp_afsr,/ b9 y) M$ |1 O3 y
output mcasp_ahclkr,3 K( O& t+ _$ E, b- J" |2 F
output mcasp_aclkr,9 I6 n5 [- m) A- i
output axr1,: D& |+ J: T! j; s8 M6 ?
assign mcasp_afsr = mcasp_afsx;
  T$ k6 X9 [% m6 |/ gassign mcasp_aclkr = mcasp_aclkx;
3 U" G' u/ w+ G$ U; oassign mcasp_ahclkr = mcasp_ahclkx;9 e. H- `; d- L6 [1 G
assign axr1 = axr0;
2 p6 @/ u# y# k
" M  N; W9 e$ F& z( \4 ~
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 k. n- J7 f- \4 f+ K0 z
static void McASPI2SConfigure(void)' l/ j- L7 F0 m3 [: h" p9 ?2 U# @  I
{3 c6 i5 i9 @5 \/ u" i& I
McASPRxReset(SOC_MCASP_0_CTRL_REGS);# J: p# m' h6 E% L+ }5 M
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */# F2 V1 _" \/ M0 i
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
$ q- ]9 p1 [) L$ g( b0 \7 ~McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. s8 M2 U. P- a1 t" b
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! q* I$ h- q# d& e: R8 u
MCASP_RX_MODE_DMA);
1 j8 G7 D% }, D+ `+ O, q% RMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: s8 \$ _* z4 G! b$ a: Y4 ]% U3 W
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */0 [0 N" M% d, E! ]" C# T6 r
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # s; b# H9 _: J
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 g6 _9 i# j: h, N) OMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , ]( Y- m/ \8 S5 R. j
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
4 N( W& r1 I' k3 L9 F+ bMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* N1 m# w3 m* q' c2 i9 dMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
4 x* F, i" d6 J5 j( o' BMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( L- T# [* o8 f0 T: n
0x00, 0xFF);
/* configure the clock for transmitter */' b" a( ?1 N  [+ D) n" m1 u0 }
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" u' ~9 ^1 y$ n/ X& o, n2 m6 PMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
7 X# I; _9 q) `! v8 {* oMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 a( R" q2 {$ ^% V
0x00, 0xFF);
/ i7 T$ n2 I/ Z" `$ o0 U9 }
! e& X# k3 B3 R; ?0 S) Y/* Enable synchronization of RX and TX sections */
, \5 o2 ~$ M/ N: W0 EMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% y+ }. s4 w# ~; B% y1 I( \
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 a3 l0 N8 L( eMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
3 k5 U7 T5 b. M1 h, G7 P** Set the serializers, Currently only one serializer is set as* u2 U& ?8 Z# E1 i! F
** transmitter and one serializer as receiver.
9 h5 G! i1 f" Q9 S*/
' G1 X$ ]6 m9 a  Y2 j9 t: `McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
9 ?% v7 r7 M: c, K3 |3 SMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! ?% O0 y- P: T8 `2 M** Configure the McASP pins $ Z6 \) W$ S. ^/ _0 K5 Z2 g
** Input - Frame Sync, Clock and Serializer Rx) r: ~( T6 V% P! d( k1 n
** Output - Serializer Tx is connected to the input of the codec % |. s' Q& y4 G' j  ]+ G
*/
) z* f6 _( n- p, v# _! r5 `McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 A( j4 h; g" ?3 l/ _McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ F5 P5 l& s9 j5 E6 @5 @) ^5 r6 P: x
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" m. f) }0 ~; F6 Y: w; N/ ~  ^
| MCASP_PIN_ACLKX
4 j. d: F: J6 I$ X1 y; {  ~2 g| MCASP_PIN_AHCLKX1 G  ^- p  K! s# M
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 ?9 |6 \( A" ~0 }1 t9 J, K* U8 _McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
, u3 A/ P& X2 Y' I& P) ?9 f" X| MCASP_TX_CLKFAIL / @: K6 k3 [# n* X) q, p8 U
| MCASP_TX_SYNCERROR
: w4 o( {7 W) P5 ]. n% y| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: j- V$ @* V" L  S| MCASP_RX_CLKFAIL
( a/ }3 Z% O8 k- x| MCASP_RX_SYNCERROR # ]+ n) j# U! O. D/ W
| MCASP_RX_OVERRUN);
3 y$ P! h+ N8 \: q8 i& |4 e( i}
static void I2SDataTxRxActivate(void)/ q4 p3 N" @# v8 G5 V4 }; c5 l+ y
{
8 K; y+ a* o* \- a6 c" p/ n  T/* Start the clocks */
9 x  v3 {& D! XMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' p- V: A/ `+ H4 k* zMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 y6 d' J3 G, Q5 {" e; s
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 }/ ?4 ~$ d. U- ?) U
EDMA3_TRIG_MODE_EVENT);# A5 {8 X3 k/ g
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 ?" n, Q  `3 E- |$ a) Y$ DEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */7 d9 C/ c3 k0 ?
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: U3 x% w8 E, u7 K6 D# g
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 o& s8 r5 n# C5 |while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% A# A" K2 K% n. h- f
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 c) n: R' n- [% }! I3 R. ~2 xMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ H3 J2 }3 z" U1 ^}

9 S$ y& X4 R8 e1 _
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ @- }& _. W8 F  M( a4 j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-3 06:39 , Processed in 0.039150 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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