MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
9 h, U5 e; U# u. `5 f. ninput mcasp_ahclkx,
2 n' A3 n* z1 h5 U% Pinput mcasp_aclkx,% B3 W# {9 O- `' Y! u; G& C: o
input axr0,; P8 c9 d4 V" E8 s0 w
$ k* W* K/ p. F9 y4 X% U1 R
output mcasp_afsr,( ?$ l3 }/ y6 \3 V- D2 e
output mcasp_ahclkr,% N* o  ^/ x1 j* O' _, j. @
output mcasp_aclkr,+ O+ k, ?& k& j" P. k+ R3 ?0 W
output axr1,
0 v# c# X7 k$ h8 p% z( g
assign mcasp_afsr = mcasp_afsx;
, a- T7 L3 j1 ], y/ q# C( a" \assign mcasp_aclkr = mcasp_aclkx;( u4 m& ~4 A: {# q
assign mcasp_ahclkr = mcasp_ahclkx;9 N: `/ N2 ?& t& b( \8 Z- o
assign axr1 = axr0;
6 N8 q7 F' t, |  g/ P, [; V( W4 T$ o7 R

5 s, o7 j" A  l$ v0 Q: t
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
% j# s/ p: [2 d1 t; r: n8 q( I8 K
static void McASPI2SConfigure(void). v0 N( v( I6 c1 [) w+ @( C
{/ L  R: M' S" o8 x% C
McASPRxReset(SOC_MCASP_0_CTRL_REGS);2 H7 L( z2 l2 v) N! A* p
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ K& _0 \/ b$ H5 ?
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) X1 H0 i+ O" d+ @3 i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; s5 l' @7 C' Q5 Y& i& t- B- _McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 F0 C8 f1 z  U, Q# M, f
MCASP_RX_MODE_DMA);, x9 N, u" `5 \" P+ x2 s
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* L& m8 c: X0 W3 h  k" \
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* w8 C) g6 t. h; |: P) y
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 1 [3 y& G9 U. V" v; Y9 }
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);( b8 e  C$ F8 a  b
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 p6 ^2 I* S, ~* {7 x: M* m0 vMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* s2 S- o' d* l
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);9 e/ n! r: j' m+ v: N$ u
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); : ]; u7 _4 u. W/ M' `1 Y# s7 i6 p) ^
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ T7 n6 m# b% X  m  O/ X0x00, 0xFF);
/* configure the clock for transmitter */; U2 K( o) N3 E" X3 ~* X2 G+ B# @  W! W
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# P- g' C& r3 T- u- P; {McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);   ], |1 Z" k  B" n" D! s+ z( }" [
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 G- M3 L. d. m9 @% B0x00, 0xFF);
+ X( b. ]. m& O6 X8 \, U
; Z0 b7 h' ~8 M& t. P; D# P/* Enable synchronization of RX and TX sections */ ' {) \; U* d+ [& L
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
; x: S6 K0 ]% b2 ~  I- lMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
7 Y% Y: n( [1 z5 nMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 b+ Y, @- R- v& ~3 e7 a  y
** Set the serializers, Currently only one serializer is set as8 O/ N& @( G# f( V; s
** transmitter and one serializer as receiver." E8 _8 y9 F; z. W. h; @
*/
6 A# R8 `+ e5 ?0 l* q5 `  pMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
, [! W' J* u/ v7 W, bMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*! T9 ~' M1 A* `1 ~5 `4 [
** Configure the McASP pins $ M0 P: t* d$ }- q4 q8 _) {
** Input - Frame Sync, Clock and Serializer Rx7 N+ T, t- q( q0 l
** Output - Serializer Tx is connected to the input of the codec 9 B2 i% c3 m$ ?8 f5 g
*/4 k2 C$ u' W; v1 z6 o
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) ]% Y8 R" `9 J# F7 v' r, ^0 h) lMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
8 u+ j5 f/ ]7 w8 A  g3 dMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
4 _' Q5 j4 G" ?: \/ k! @| MCASP_PIN_ACLKX" B% |$ ?& M0 ?3 ^1 B# F) S' C
| MCASP_PIN_AHCLKX8 q4 O; x* R; |* H8 t4 n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */2 \# f+ `) i4 u2 `9 [
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ I0 f8 P! N7 o; C8 J- M| MCASP_TX_CLKFAIL
9 C8 v- L# \5 v  ^7 s- j* `| MCASP_TX_SYNCERROR
) h: T- d! T( H& }3 `6 r: g* I| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 k. t, C) \) c9 Z8 d$ |* T* s| MCASP_RX_CLKFAIL
. l* {0 W1 n! f| MCASP_RX_SYNCERROR
1 M4 G+ E5 G* M' N+ w$ X( z4 I| MCASP_RX_OVERRUN);: }7 @3 h" \6 F
}
static void I2SDataTxRxActivate(void)
( j5 R3 L; K! x! n{
7 ~6 w- Y. p% z& j2 v+ ]/* Start the clocks */
/ N: v$ _' q+ m& f2 M& `+ }McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! P+ O$ a5 }2 G, N; o
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */0 V2 c/ {9 ~  t; C8 s" J
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  ^: @. o4 v% U. }8 `3 ?0 T. s( xEDMA3_TRIG_MODE_EVENT);$ z; h% \, q6 n1 j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ; X' A% A- x) M& @2 x
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */0 _& F8 o- d7 m% Y, R6 y& J9 B
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% [) p* X1 w/ D4 [0 m
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' ^; V" d, J0 _  \0 ?4 C
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */- n  y2 E$ \, B. C" A1 p) B$ L
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);. J! y1 |0 v: u9 ?# M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
* [5 r/ u; T6 w% S% ^; b  P}

$ Z1 h+ F. e: J! B2 s
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

9 E" @8 L) m& j: ^  L- F3 R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-7 18:57 , Processed in 0.045697 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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