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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9907|回复: 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,
$ x# p5 _" {& p0 K8 rinput mcasp_ahclkx,' \# Z( N* z9 D, s1 f
input mcasp_aclkx,
7 E5 z# w" L9 J- i2 j5 W4 l0 xinput axr0,
8 g' ^' Q+ N* ^/ \# `& j, z: W- z9 r+ ]* G
output mcasp_afsr,
4 S# l) i, `; \6 f* e+ [output mcasp_ahclkr,9 z- X% l' L/ c' U' U; b
output mcasp_aclkr,
4 u" a8 U; j1 w0 z) uoutput axr1,4 p8 p  N$ v# V: S( ]# X
assign mcasp_afsr = mcasp_afsx;3 M: }9 A5 M% E4 G$ v) S* W6 {
assign mcasp_aclkr = mcasp_aclkx;
& ?0 L; x; b4 F$ Oassign mcasp_ahclkr = mcasp_ahclkx;
2 `3 P7 K' D9 V& }) \: iassign axr1 = axr0;
& t6 |  s3 r8 k' q% o' `
, o' o4 s: w5 o$ `# T
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
0 u/ C' O' V+ d5 r9 s5 F) ^
static void McASPI2SConfigure(void)
7 \0 x* o4 Z8 [( Y" H% ^{
: A- m( d: {6 S. \' CMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# D- N6 M/ \) L: A- ^McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) ^! G  y, h$ r# K' Y6 rMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);% m. f* ?, `& }7 [
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
: R: R3 R% h0 `; d- ZMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 M" G, U2 p, l; F9 X: {0 Z& oMCASP_RX_MODE_DMA);
0 q+ X' W9 a& P( yMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! o! a6 i! z( g) D1 D3 H: k2 dMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- f) L% Y3 U  u1 P5 B* i
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" O# P. H  R7 `" o7 t. ^MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);% D. G5 h# s& k$ {$ {; G2 }7 q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * _, m5 i/ e8 M  Z" W/ p5 Q
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! g* q  q4 a7 ]3 KMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
! N0 D0 ?0 i' y+ r1 KMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % C& L! X; \) d: L; M0 j% z- \
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
+ X& o, z, G' u0x00, 0xFF);
/* configure the clock for transmitter */
/ c. a% h  s# }2 VMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( {: Y! b1 W/ U  t/ ~5 h( j8 c  iMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " d' ~" e/ I$ ^8 d5 n- Z& V+ U
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 Y1 g; a$ L, W7 v; Y! u( j+ _0x00, 0xFF);# R% Z* n! ^2 o1 B# f

* [9 V, i% O2 N& G' G" r/* Enable synchronization of RX and TX sections */
7 P& k, `. d* R1 }: g' ZMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */$ }5 Q* y/ ^" o9 r2 c
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; y$ {8 `4 z" }! d; Q/ z9 y7 GMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*4 K3 o1 q' X3 E# C9 x! L0 |
** Set the serializers, Currently only one serializer is set as
. Y( s$ n3 F2 U1 f** transmitter and one serializer as receiver.7 }% R& C8 l: J* l$ v
*/
6 o. W! h/ q* r7 N/ B* z) kMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);! c7 ?+ h4 Q9 d& o0 v3 R. g
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' s3 B- z" \9 b% T# k( \
** Configure the McASP pins
9 n. r/ i' g  v' u* T! R** Input - Frame Sync, Clock and Serializer Rx
6 O" K) F" k! a* O- f, u5 i** Output - Serializer Tx is connected to the input of the codec 7 v; W, s1 Y8 V; f: q+ N
*/1 ], o/ E5 p8 T5 x
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- m% q. ]# c( @' v* ?McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 C" }' |" y' m; o& ^
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
1 ~' n  D4 D- r7 \! h  M& z| MCASP_PIN_ACLKX: E+ y, }5 _2 x9 {
| MCASP_PIN_AHCLKX
% B* Q' n9 y/ K4 v- `) q; H| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
1 L* ^7 c( C, H2 {: ~McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ' i" I/ r+ H3 C! V% [
| MCASP_TX_CLKFAIL
! `4 d' S5 T" J+ L' p0 S| MCASP_TX_SYNCERROR
8 F* w0 E. ~6 K: e' {" B( q| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 w9 I8 \+ `$ z3 Y  {( @2 V
| MCASP_RX_CLKFAIL8 I" P$ C& }2 y& j% w8 H
| MCASP_RX_SYNCERROR
7 ~' A4 [* r& D! _# `| MCASP_RX_OVERRUN);8 `$ C" Z6 f+ @. t4 O
}
static void I2SDataTxRxActivate(void)
( y2 T5 ^. O4 |9 R{
' B% v2 @8 d& f% G1 @) g! h* R/ \/* Start the clocks *// p. |# T- u9 x7 `7 H8 s
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# X- n+ @: j, ~) |- UMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer *// C: n$ [+ O/ K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX," p: i) [/ G' R7 o
EDMA3_TRIG_MODE_EVENT);
% a6 O% G2 q  m3 a- [$ nEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 6 I* M! G9 m  n4 ~# L8 n4 B! Z7 }
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
2 d; m: y2 L4 ?- O2 @/ E* r5 mMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
( ], ?+ n' X- l7 |9 ?" w* w5 yMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) |2 M$ W" q1 _. Y2 [) Y8 v* zwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& @/ Z4 G' z/ m+ M& y& NMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 E& c% C& j/ T6 FMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 u) ?; }( O" {}
( h% u; k. ~3 B3 u0 l6 L6 ?: d5 n5 P
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

- I% X- \2 }8 Q3 S& t/ c3 D; y& U( x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-23 18:29 , Processed in 0.040271 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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