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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11888|回复: 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,
& h/ F4 R+ K6 J4 \# A4 Cinput mcasp_ahclkx,1 J8 S1 {; a5 E
input mcasp_aclkx," t8 X0 I+ {' ^- X) ~
input axr0,2 w9 Q) C" F* P2 v7 @

3 w( s, A, U- h* k& s1 Poutput mcasp_afsr,
0 k+ B2 T3 `! O% v( r( Routput mcasp_ahclkr,) |( w3 P; V) F; m% _
output mcasp_aclkr,. t5 q' k; i- W! Z5 Q' k) C; V
output axr1,
/ [/ [! y* s! U% {6 e
assign mcasp_afsr = mcasp_afsx;/ Y' S6 b7 e; s
assign mcasp_aclkr = mcasp_aclkx;7 N  y6 _) G! B* a
assign mcasp_ahclkr = mcasp_ahclkx;
: O' W; b6 @- ]% k0 O1 Tassign axr1 = axr0;

, p8 y( r6 v* K- u3 `; u9 V
2 o, r0 m6 y$ z; F& D7 ^
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 w/ Y* v/ r* h" B
static void McASPI2SConfigure(void)
. D4 d+ y8 H  a) s8 j, d2 j{
+ Y, I. _6 L) eMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 _( J  N- ?0 p; w8 n+ TMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' O. Z) \" u. k& cMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);# L  q/ E/ N) a* c
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 G2 Z; W- Y" x; Q! g  _* E, H+ d; PMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- h, ^2 d8 @) W7 J2 j8 lMCASP_RX_MODE_DMA);# R9 I' V; n0 z( O/ h
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ [" W4 T% z7 F2 aMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ k3 V$ v* I+ K+ b' Y
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 d) Y) {: U+ z* ?+ d. t) c
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
( T' Z! ?% Z- S+ X2 ]McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ' A5 y$ Z  D) x
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
- P9 N; O& H$ r+ ]McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. V& [5 u/ a( T
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + u+ O% U  v+ B8 g# `9 }
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,5 Z8 J: D- i- |% G: `( K
0x00, 0xFF);
/* configure the clock for transmitter */
! ^, t5 O7 U( GMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);- s( T5 ]( n: w( o" v
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : ?6 {3 v9 H) G& B, _: `8 ]9 n* m# v& g
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,% d9 W0 ^, O7 `* a
0x00, 0xFF);( k, i( _$ P: P6 u
5 a6 H7 `. l/ V3 ~9 {/ G6 |/ T
/* Enable synchronization of RX and TX sections */
& l1 `9 g' y0 qMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
; b7 f) g, s" PMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' R4 B" _; v# L. f) R3 b
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" n' X9 _% v  \5 |
** Set the serializers, Currently only one serializer is set as
) {/ \+ G3 `. |1 A5 l" J** transmitter and one serializer as receiver.
, J4 s0 R+ y) K: g*/
0 Y& g/ e/ ~$ l* IMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ c8 p2 j5 _1 W- J9 I4 z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
$ y2 _3 y0 T" Q' O* D** Configure the McASP pins ; b6 ?8 m$ Q# i; B
** Input - Frame Sync, Clock and Serializer Rx
: L, H' Q' M. y** Output - Serializer Tx is connected to the input of the codec 4 ^7 T" q/ \/ M$ _& j
*/
3 O. y: h  x. }3 A" ^" f& ~McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: V3 s. F/ a, e( S# ]7 D
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));( l/ T6 H- o2 [/ a7 ~
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
# E9 n3 b4 b- Y% |' n0 R| MCASP_PIN_ACLKX
4 j( b- _6 w9 X/ n; C| MCASP_PIN_AHCLKX' B& ]  ?: Q& W6 K0 j
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
1 ]; k9 t, \2 _$ eMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# v5 F& H* R$ s% h. `| MCASP_TX_CLKFAIL : T9 w( v) I7 f3 @2 f1 S$ K! n. n) I
| MCASP_TX_SYNCERROR
& A' x( v/ V% V0 j& r* ?| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 Z1 q; t) W  c; r$ `9 w4 ]. W
| MCASP_RX_CLKFAIL
" C* R- _, |, Z/ y' x. S3 t) R| MCASP_RX_SYNCERROR 9 Z/ T5 X( z- F7 e0 G
| MCASP_RX_OVERRUN);+ X3 N4 ?& X! U& }# c3 e0 \
}
static void I2SDataTxRxActivate(void)1 E: E* i3 V0 D* y  l
{
6 T1 \# {& D7 F/* Start the clocks */
! J' x  M/ S* P3 M# [* R5 ^$ `( _McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
2 u! j2 e2 W5 C4 P" o+ TMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 g$ w" W+ ^7 HEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,% ]8 F& q- b. q7 u
EDMA3_TRIG_MODE_EVENT);8 [8 H, e2 ~: `3 \
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 ?+ R, C( h/ e: p' T( x
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% _) F& W1 @& b4 X: s- V7 d# E
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 ]* I# ~. Q& @& qMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% s8 j7 c3 C9 k5 t5 Uwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: \2 h$ S2 Z& t- L
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
, ]! a5 `5 f+ [- l0 SMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( N6 e  Z+ t. [}

& G! G) I6 R5 z2 w: x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
! l8 u$ e! P0 R! x8 _+ ]- y3 V5 V; e6 B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-18 20:17 , Processed in 0.039501 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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