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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,& b! L( B& B' E; }' J
input mcasp_ahclkx,
+ _; t; `; [) z% w3 ainput mcasp_aclkx,6 ]5 [, v" x. I+ A8 J6 R
input axr0,/ y( p" j% W0 R6 z5 Q

0 {+ h2 K# S1 o7 E/ [1 Joutput mcasp_afsr,
, n. ?" Y5 ]* k8 q- L( o+ m* {output mcasp_ahclkr,
, P& E/ K; ~4 i% J! j8 Boutput mcasp_aclkr,6 Z& n  H: l; f+ h' z
output axr1,
% i, t0 ?9 R$ T$ P3 p  ~
assign mcasp_afsr = mcasp_afsx;, _7 ]( k- O/ v* R
assign mcasp_aclkr = mcasp_aclkx;8 m4 k6 ?$ N* b& R
assign mcasp_ahclkr = mcasp_ahclkx;
7 E2 F1 _( G/ ]assign axr1 = axr0;

/ F$ _) e* g% J) T7 J4 E1 Z  w/ \  C) N( i) l4 j: g5 j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

- b0 D" S! H3 }$ O. N: V
static void McASPI2SConfigure(void)
+ i& I" f+ |) m% a) F1 k; o{
) g* |0 }) ?% u# \: l/ y* _McASPRxReset(SOC_MCASP_0_CTRL_REGS);2 s* \% w0 ]- z: L2 U! \
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; S, c4 ^' B7 y1 i8 q* kMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
# t) h$ K1 R3 F, w+ T8 q& ~McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */! E2 A( Y( ]. m8 R
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 j2 A. I0 r& W
MCASP_RX_MODE_DMA);2 l; C9 d7 m3 O6 J2 I7 Z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. s: r; X" Y. A' @7 MMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// |, V6 u& `' Q( q+ T( ^2 W0 f
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" ?: H8 {$ ?) D" g3 p: bMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, G8 R( L* Q$ G
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 t% ~/ X1 d% q
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, f; F9 `# q9 V1 E
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ {2 ]- D8 @% \8 a5 g" SMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " x1 V' ~$ ^% U5 p& |6 w( I
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( n" B1 \. r5 Z- K
0x00, 0xFF);
/* configure the clock for transmitter */% U+ N2 _/ R5 H7 H% [+ g0 m5 u- Q/ |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 g5 ]* E1 D4 M% S& QMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( E' k% X. }5 }9 q2 P$ R; TMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
- H1 v* V- Q4 E: ^# q' T0x00, 0xFF);
! l; X4 ]9 T* {$ O5 H  q" c
9 m- N9 R: ^0 F8 M' d/* Enable synchronization of RX and TX sections */ 6 v" `) I4 V* }/ Z: X6 Z3 E# ]
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
; X+ S& j: E& @. BMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
: ~1 f: B! c1 ^' xMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- J! o# n6 j/ ~: ~3 u& q# t2 R
** Set the serializers, Currently only one serializer is set as6 j0 W5 H. U" ^- P: ^1 U
** transmitter and one serializer as receiver.
8 g! j( o+ W- P/ a6 Y2 |*/
3 ?" p) G0 J* K0 `/ `2 ^0 z9 r% ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
9 V- `% O. E3 e% H/ {McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/** O& W6 _' p/ _# W
** Configure the McASP pins ; z$ {1 K" w* A9 s
** Input - Frame Sync, Clock and Serializer Rx
( j: C8 h0 ^. O* }** Output - Serializer Tx is connected to the input of the codec ; N& i5 j. ^8 o
*/
4 u4 H9 W' ?" E( hMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 K6 D4 k$ k! l, c7 x9 Q( ^* YMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
1 S# J7 i8 u) n) W; ?0 c5 JMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
8 {8 K1 c* I: z8 R( c| MCASP_PIN_ACLKX' P* U. A  j; ^4 B  F* p5 A) |
| MCASP_PIN_AHCLKX$ g; m2 c  P3 M
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 h5 T  x2 c( rMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ ^5 `& E# z; V) C  s8 \| MCASP_TX_CLKFAIL 0 B$ x1 N# U: M/ O
| MCASP_TX_SYNCERROR
: `: d: X1 G. X; R( q| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
/ U+ e& S) R2 s| MCASP_RX_CLKFAIL2 h# @" {% O0 G5 Q# t. D
| MCASP_RX_SYNCERROR
+ K# M* M2 F$ v| MCASP_RX_OVERRUN);
0 }  x) m- x# t& d$ B}
static void I2SDataTxRxActivate(void)* I$ p5 A- J4 {- I1 g
{- [; J9 [6 F. c; f5 m9 X# F6 p% ~
/* Start the clocks */
" E# D$ v; @: W! n) _- O) d, HMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 [; B. }. B8 k; J( F! C6 v  i
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 E9 L, `& r* r4 f7 ?+ T  WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,% ?  y/ L* X) x: O$ e- I
EDMA3_TRIG_MODE_EVENT);! O+ _; H% g/ a% ?
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & q6 a- O4 }& l/ N8 M! q+ |' G
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% y6 z8 Y. J( y- M: k6 ZMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 Y- G; l0 e: M" C8 Z# R
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */: M( H  e7 S4 R3 e
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */  O0 O- z0 p+ v* q' X9 x- r% V
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 |! U; W$ |" y8 x, d7 `. W
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 A( S+ \- u: N! i, f
}

( d- O1 v0 @0 Q2 W9 t
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

, \6 Z6 M. ~0 i6 z/ R% Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-1 16:14 , Processed in 0.035871 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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