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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10514|回复: 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,. v( H3 K3 o+ i1 p; _" @0 \
input mcasp_ahclkx,/ `+ J5 v* A5 \3 T' _9 R9 q- Y
input mcasp_aclkx,9 r5 z8 w# x- F9 m1 X0 g3 d; T
input axr0,
! r5 W* o! L5 X! W9 m$ M
6 w3 V. i4 J+ _- c3 ~+ poutput mcasp_afsr,$ ^" N' c9 @3 e) U" Y
output mcasp_ahclkr,/ o  Y$ g# i: }1 [0 x
output mcasp_aclkr,) }2 k1 O# G/ x4 D! F- m
output axr1,+ G5 U, a1 r: E
assign mcasp_afsr = mcasp_afsx;
9 R) W, S6 w5 f1 d' N4 rassign mcasp_aclkr = mcasp_aclkx;) n$ F- B( Q) ^( ?4 i; T
assign mcasp_ahclkr = mcasp_ahclkx;  p9 Y, {3 k: O5 b0 S) P
assign axr1 = axr0;

+ p" M1 }, Y$ K
3 @4 e2 I/ `6 t
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
3 k* E" t: e, j* f4 x4 }5 o$ o! d0 d& A
static void McASPI2SConfigure(void)( c# z' C8 }8 m
{
6 C5 T  g! _9 `3 rMcASPRxReset(SOC_MCASP_0_CTRL_REGS);9 v+ q0 q: x% i3 w# j+ h
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */% S( o- P% O  r. E' {
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);- L+ \4 Q& f/ ~; G
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 m/ L# b. d5 B5 U( s, J4 Z* g
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 I5 @8 Z2 J. m
MCASP_RX_MODE_DMA);" t" K# {  [# e
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 C" w$ J" p. V7 p9 i4 ]/ DMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( J$ {3 e$ q2 u  Y4 p3 c: W, ~
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 [3 Y+ A: V  B5 Q) s9 M$ k8 NMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 d  Q5 P9 A% r/ ]' \' d
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 V' \4 U# s1 F& q# CMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, B4 t  Q; N9 F) \% a6 K
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 [6 k; `2 d+ y. Z1 }9 l& m! S
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' \8 U: {4 X; N9 b
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,6 T7 ?9 {6 d, H
0x00, 0xFF);
/* configure the clock for transmitter */
, U. m8 y; q: G4 e/ z  ^McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);8 a! |5 Q2 l4 O& b
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ) |# @/ Q3 f1 h: |0 a
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ S7 o8 K$ `; @! ]: K
0x00, 0xFF);, Q6 }3 R4 I/ \

# l0 r4 b/ g3 g6 `; a( C1 z# o/* Enable synchronization of RX and TX sections */
( h/ b6 s3 M# A7 @2 g; p& O' ]McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. l+ h; R1 O" B6 Z8 s6 I6 G1 yMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
& p- T) j- J! q7 AMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*1 j7 N7 y+ k) F9 k$ |; Y6 G0 p+ s
** Set the serializers, Currently only one serializer is set as6 Q* e* [; d9 C7 S2 k
** transmitter and one serializer as receiver.
, i7 u$ m- n" F; v& ?/ p*/+ E5 b0 a- ~, k8 h( t# K
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);! ]' C- u3 X- b" ?. _  {5 U7 y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*" A/ D7 ]7 ?  P& M7 U' @
** Configure the McASP pins
. A( g1 J, V; p  B# E. n** Input - Frame Sync, Clock and Serializer Rx
# w) n; g/ g3 G# }) I- a** Output - Serializer Tx is connected to the input of the codec 8 F- w2 o6 V  V5 E3 a9 U
*/$ F- Z* X0 q% t9 ~& Y8 h
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" W3 u8 u$ ^8 i/ m# m: D
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ v: p7 P( E0 D% M# C% c! eMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
, `7 _) E: H  Q/ o$ F! l2 d8 _: E/ e| MCASP_PIN_ACLKX* f0 s3 Q2 S" m4 W/ V8 |0 k# }, D
| MCASP_PIN_AHCLKX
8 X* w& Y- Y& F2 O' X9 ]| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 i. W9 u9 r5 V: |; qMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 U$ G5 _5 ?- N, e
| MCASP_TX_CLKFAIL 6 M# Q, F: r' ]* a' d' ^
| MCASP_TX_SYNCERROR2 f. X0 m( ]3 |- u' V4 K9 U% v, y
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
# d) ?: k/ q2 Q$ W  {  }3 w) P| MCASP_RX_CLKFAIL
( c( o/ c0 j: Q( L$ Z9 a| MCASP_RX_SYNCERROR
2 `# T* C# d* D0 t% W| MCASP_RX_OVERRUN);
& r  V8 w0 }1 _6 f5 }}
static void I2SDataTxRxActivate(void). n( ~% Y. c& `# ?5 M
{' D" T- N+ g- C+ ?2 [# ]. V9 w
/* Start the clocks */* u% ?4 c9 C, m+ b
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# \7 z  f4 J. D" b& T$ h2 rMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 W) {, Z' P7 X, d: O) l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
$ R# a5 ?! N8 y' K. d- k' E# s. {/ DEDMA3_TRIG_MODE_EVENT);5 Z8 ]9 {4 G# I2 i3 e) D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 0 d. O" f4 O( U, F  n
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
  i4 D- E0 }+ F& N. H: XMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
- C" l4 V3 s* _McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */  O$ U, z% h( X+ h
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- j' P2 X( z) C' w( S$ X1 nMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& T% C2 d4 a! S$ mMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ X2 P* C4 s4 I6 r8 N}

3 w6 r# Y. f* |; I
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% n, m) ]$ I: I3 ^0 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-8 17:33 , Processed in 0.040290 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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