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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
# G# V0 I) @/ D$ R/ yinput mcasp_ahclkx,
! `8 X. e- e, Iinput mcasp_aclkx,8 p0 ]$ G/ m, M$ x- V4 X
input axr0,
4 c9 c" M8 k) _. P" j5 G- _& i, y7 @' c
output mcasp_afsr,2 K* e4 ~: }& `0 \" ^& @# B
output mcasp_ahclkr,
! {- u. }. G/ I5 b" d1 coutput mcasp_aclkr,* [" {- t$ V  |' b
output axr1,
5 X2 V' o; @+ I( M1 c
assign mcasp_afsr = mcasp_afsx;1 h' k- e4 Z2 a+ U/ w
assign mcasp_aclkr = mcasp_aclkx;0 w9 G, \( }* }% N4 K& X) j
assign mcasp_ahclkr = mcasp_ahclkx;* D- v' ~' u' t- _9 u
assign axr1 = axr0;
5 Q" n& H% K3 ?& N
6 J2 @, q6 {4 i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 \2 w" C9 ^3 t7 b
static void McASPI2SConfigure(void)
& q' ^/ Q; ?# O{
) h8 u4 O! ~4 F3 a* R9 q2 y1 S( aMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 s; @1 t! m1 N  R. s( G+ N* R! vMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
2 E$ r) m  [) g8 A& ]4 I# i! f* XMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);5 a2 K$ V& o7 F; {" q4 O
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
, x& V/ a2 S$ E1 ?6 y9 ]. ^4 a$ Y0 L0 rMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& L( l0 c" ]9 R' N; jMCASP_RX_MODE_DMA);
# _5 C# M8 P) ?3 FMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( _' f) H# U3 \# y! x8 d% s
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */' z0 Z1 o4 V: {" K) v
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 o: y: k3 ~$ C
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
; s/ e4 y" V' l# o( t8 r5 `+ CMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 @7 Z. W- t4 d6 {MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
& j# ?; j* X' VMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
9 C2 W2 G# R  t1 t  IMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & n  b0 v! ^1 \
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
; s' V, S: I/ ~0x00, 0xFF);
/* configure the clock for transmitter */
/ M8 u% n" @6 g8 m& g  Y2 E/ Y  TMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( M, T! a( h1 y3 p( f/ }McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
, u/ v' d( Y" _" O& v9 X2 iMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- P9 @  C8 @8 i8 _( G
0x00, 0xFF);2 X, `$ X" ^, G4 u9 A9 w+ ~
" M/ [7 E* |1 p& R$ k& v
/* Enable synchronization of RX and TX sections */
0 p  [! H8 v3 @McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */. ?$ y. R; P- Q+ V/ n4 G5 Q* D
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);; W/ b4 W8 K9 d1 v
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*# a, a* q, d, v, d* ]9 l, b
** Set the serializers, Currently only one serializer is set as6 r# K) f" }! U
** transmitter and one serializer as receiver.
4 `9 _) `0 R% }) E*/" I- ~3 \7 U2 |( A
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
2 ~" V5 W; I4 o7 D5 HMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* u, ]4 i& P1 m, B. A** Configure the McASP pins
/ _  d8 K4 |3 F" A) ?% S** Input - Frame Sync, Clock and Serializer Rx
. P# P  f6 A2 j9 _$ g** Output - Serializer Tx is connected to the input of the codec
% X% |( A; p* L! N, O. `% G*/
8 C$ F; q( w" ^$ g! }( SMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);! M' K) P/ K) _
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));, x9 q% [) P' _; q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- d8 g% t# i) D5 j9 Z| MCASP_PIN_ACLKX. |6 U# m9 e$ K$ I
| MCASP_PIN_AHCLKX
0 y. y; @8 H" v) T5 ~8 X9 v| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */" z9 C. t) a+ l& E% V% g: ?. J
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : ~1 R% J" S/ W5 k1 [
| MCASP_TX_CLKFAIL
5 x% ]  R! J0 x9 f) V| MCASP_TX_SYNCERROR3 u0 ]" ^1 u+ c- {0 }9 g- W4 b
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " Y. U* g; A# O
| MCASP_RX_CLKFAIL8 w- w6 i4 \4 V$ ~5 o' T4 x; I
| MCASP_RX_SYNCERROR
+ m1 Z! y  G$ D% Y$ Y! w8 T| MCASP_RX_OVERRUN);$ i% d, @% y4 [. a4 ]
}
static void I2SDataTxRxActivate(void)" z* ]# f* W) D8 C4 D% Q. s
{" Z. J. \( q# h6 N- E
/* Start the clocks */
0 A  _9 h" ]. G: ?McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);2 k% v: Q" p; k- j9 C0 Y# U
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */6 u8 R1 s" F5 _* j0 C1 u
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" G4 Y8 ?8 T3 M$ nEDMA3_TRIG_MODE_EVENT);
; K0 T) d3 O5 T7 iEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  n1 P* L" k, q! D9 qEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: l. n: ^0 n, E0 T; Q1 d0 r  O& ?McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' S8 E3 H- W* {McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */+ d5 Z' h* Z% a( _: C
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ {0 ]2 w4 T" f0 jMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);4 u% p9 P* ]9 R; K/ m. s
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! {5 R1 e1 [. B- u1 K+ {}
5 T$ G7 G! s$ w' Q( v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

4 g$ E( ]- C6 o' \  ~/ ^8 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-18 09:55 , Processed in 0.045016 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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