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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12435|回复: 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,
- p2 p5 k7 b+ o# c: t1 F+ Minput mcasp_ahclkx,! Y7 U2 u# }9 S0 j6 Q
input mcasp_aclkx,
* r( h2 k- }3 K, Y! rinput axr0,5 u1 q  L. p9 ~% F+ s4 @' o
( s5 O7 B: _4 V
output mcasp_afsr,
3 Z& W. V' z/ J2 A; Zoutput mcasp_ahclkr,  i9 l1 O) V( o3 F, ]7 H0 z
output mcasp_aclkr,; g; K1 [+ V! P3 e/ E7 E  V3 T
output axr1,  @  Q( }( I; W6 ]1 l" ~
assign mcasp_afsr = mcasp_afsx;6 {" k; G9 Z5 U- r1 w4 ], ^
assign mcasp_aclkr = mcasp_aclkx;* b* {* f5 K; z1 ~
assign mcasp_ahclkr = mcasp_ahclkx;7 C5 ^7 ?0 `4 L% L/ }5 m0 U$ B
assign axr1 = axr0;
( u8 Y- z6 h3 _- |
( Y5 ?% @! e* W& W! C% J+ v" E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

! s0 Y9 Z6 Y" S' k) N1 E  [) {
static void McASPI2SConfigure(void)8 F: X( t7 L8 _2 g& V
{' ]+ m$ E5 \. m. c
McASPRxReset(SOC_MCASP_0_CTRL_REGS);. E2 H- X* k7 N) A
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. V/ e9 ~. K+ X9 P, r* [
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);, m7 @, m" J( D0 t( N' \
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units *// q( w. ?/ [/ Y0 G/ d, O
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 s/ w- g3 y$ c% _2 N
MCASP_RX_MODE_DMA);# ~& M+ J5 I) B" y1 Q- [0 N
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* W8 M5 j: F2 n1 o  o
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 |! M! i( i; I9 `- x
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, $ f& ]0 A9 S1 R. B7 n3 \& w
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) n5 e( _3 w% I& `* S4 tMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 1 u( v' D* ~4 {! o2 C6 W9 D$ j* h
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, K! n$ |2 ^1 |/ h; |! w+ M
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);/ M+ J& A4 h4 z, i$ W8 P
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
- s  ?+ e$ ^. c& `6 [McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! G4 y/ }+ o# t0x00, 0xFF);
/* configure the clock for transmitter */7 S) ]$ }0 J9 D, m6 m
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. A. q2 J, s% A! X# X
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 [: `! u( u4 ^
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% t: T6 O4 Y0 D8 c3 B4 b) f) j0x00, 0xFF);+ Q8 Z! q& x4 t( n) }, C, _) a( T' f* t
" R0 C' f8 ?/ z  @, \- ~% z" K
/* Enable synchronization of RX and TX sections */
4 \: u6 a/ H7 l7 r. h) QMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& B: U- k* K) @4 |* s" {, lMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 I3 b8 U. y9 C9 u' N2 u' EMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 M& m3 R% ~  y3 \& I( m1 S
** Set the serializers, Currently only one serializer is set as8 }: E! U+ g4 e  M
** transmitter and one serializer as receiver.' }0 d% f% C7 k% i# ~2 l$ t2 _
*/
1 g: R5 u( I: q3 M! _- u! rMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& ?& w, ^$ S( Y% ~0 S3 W* D
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) ]$ c! U1 O- n# u; I. M" ~** Configure the McASP pins & \' J/ a) O: q
** Input - Frame Sync, Clock and Serializer Rx
- |: d1 D2 r. V3 h! o! q** Output - Serializer Tx is connected to the input of the codec
. g  _* ~6 H+ u9 U. H, {- v, Z*/
1 F4 L" a3 d/ x% N7 O. B0 YMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
' `1 J: a4 j5 w% E! pMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ Z5 L6 n  C& l5 D# {3 W0 AMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! V7 q( O. W2 k0 n6 w8 }| MCASP_PIN_ACLKX$ Q  H! _' i5 O: g% v. w/ R$ m
| MCASP_PIN_AHCLKX
- V! ?4 H" C  T3 _7 J| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  |# z; ^0 n2 P2 z
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & q2 G+ X) V* ^& @- ?. q
| MCASP_TX_CLKFAIL
( l3 `( C6 v5 f8 `) _| MCASP_TX_SYNCERROR; V8 N- x+ G2 w( d
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 }; |0 s" A  U2 \: V6 o' d| MCASP_RX_CLKFAIL
6 r! f2 R9 Z7 u| MCASP_RX_SYNCERROR 3 H6 t( R8 i( j8 U' w1 p
| MCASP_RX_OVERRUN);& {/ n6 B' ]; Z
}
static void I2SDataTxRxActivate(void)
8 a/ r. ?9 c3 a{  v/ X- Y7 L" P  B6 G
/* Start the clocks */
- G7 H  ?  ?7 E/ a! j* e4 DMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- w4 ]; C. M; b$ Y2 N+ z+ IMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" F8 u7 F. Y) s$ k" [4 EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ k* t" Y% {; h- Q1 P3 JEDMA3_TRIG_MODE_EVENT);
' b0 u( i6 b2 L$ j) M/ VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: r. o; A" {0 T- C. MEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */1 a: U& x) E, v) H4 r
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
- T4 t" I: F3 ]; Y! jMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
- Y; q8 p& j5 e* |/ ]while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& @% S. }9 z0 U# LMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) {/ l- `* p% j; V6 D( [, }- fMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: k& I( V+ C- w1 l}

$ ?8 |% t9 p! B0 }
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% r: J* `7 L; P% G. f7 t# c8 @4 x; ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-9 01:31 , Processed in 0.041097 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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