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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9925|回复: 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,/ d& s4 ~. o/ v2 X
input mcasp_ahclkx,0 i0 ]  n( r9 a! p7 d
input mcasp_aclkx,
9 R# W: q6 b: s( Einput axr0,; p* y* |! {  j9 ~

: H8 w; W. ?- Soutput mcasp_afsr,
8 M' {# M2 ~0 H" b9 N8 ~5 {output mcasp_ahclkr,
$ B5 v# K0 u: t1 N7 _7 G+ `output mcasp_aclkr,3 S5 ]% F' t5 `/ s* b  y
output axr1,
. J: a" Y2 n. n4 @0 ?5 T
assign mcasp_afsr = mcasp_afsx;+ J' D6 y) F" M5 ]: D: B
assign mcasp_aclkr = mcasp_aclkx;
; Y* Q# h' L& X  y1 Zassign mcasp_ahclkr = mcasp_ahclkx;
; |0 U% J8 h, Hassign axr1 = axr0;

9 D$ \/ R( h+ l7 b7 Q% Y% G& Q+ d: w8 _2 h3 p7 a
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

0 @  S0 a" g) ^2 {3 {5 ]
static void McASPI2SConfigure(void)
) I2 _2 W8 r& N- g8 \& z/ X- H" Y7 D{
" B5 o; l: X# `+ e- o: B5 N6 ^McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  ^9 [# v5 d9 X  I# ]$ SMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 J* F3 n; v3 i/ \- U, n
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& |* R! Y4 y+ E2 X  {2 C
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
  h: {* q5 E2 e. c$ }McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& y" G2 K$ i3 Y. Q/ `; m
MCASP_RX_MODE_DMA);6 n+ |0 g) [1 l! s+ b
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' ?/ J7 J$ k8 m% v1 d8 l) O' HMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
' }4 @/ r7 f: I0 B" BMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# {9 F$ b' g( O) y- s& J# F6 CMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);/ w& K* y. z- R
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 I8 L8 z2 x9 {$ ?! I
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
- p& L4 S" q) e+ L1 T/ LMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& ~9 \! d: @( S
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
7 O/ e" b6 ]( S7 H, ?McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
6 Z) L6 H2 C, H& W) V' ~7 @/ Z0x00, 0xFF);
/* configure the clock for transmitter */7 R; t" I' W/ `3 ^. b- |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; M' S: Q6 g1 Q! e0 a3 l, V! k
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " `5 U. `' D. k% @! W5 a
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- O; S9 r. X) o* \, A3 s* [
0x00, 0xFF);
7 h' y- U* S% e6 a1 ?$ u' B# x6 r* {
/* Enable synchronization of RX and TX sections */
! o8 a* y" o* }6 Y2 S7 H6 n" i: k3 dMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */' ^& C% f/ g2 E
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 x0 f+ `$ L; g5 u% n
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 @: v0 _2 M' C$ C
** Set the serializers, Currently only one serializer is set as
6 z7 a/ B* S7 ~5 a** transmitter and one serializer as receiver.7 d4 }$ O2 [9 x  J! |. G
*/
* i3 A% m9 N# s1 z$ J0 A" l/ N2 VMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);" k2 k' i3 K' B$ Q" U! @
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
4 M" u3 E8 L# _, ?7 W, V: @** Configure the McASP pins
+ U- R# }3 ?! W' g! v** Input - Frame Sync, Clock and Serializer Rx
# u+ h& i; b; r- ]. S& u** Output - Serializer Tx is connected to the input of the codec
- o8 i' r: r" f( I7 X( i% j*/: @& I! ]: }0 _1 w
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);& D7 B0 r+ G9 a$ U' U
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ W0 S. o5 w: p+ r/ @7 v- {McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 Y& _7 j& b7 W8 E' X: K& |# |. q| MCASP_PIN_ACLKX! }/ g( ^9 R' s' D6 E7 F0 r
| MCASP_PIN_AHCLKX
1 \) ~- c6 k# [! ^) {| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ ~+ x' V+ M# `" F% P  R7 @McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / e9 h' g, _% K5 ~, M, v
| MCASP_TX_CLKFAIL 3 V  `& a( X( F& x2 N
| MCASP_TX_SYNCERROR4 {3 C3 @+ n& [" b8 o
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
; H+ i+ J9 M% W7 x; W( q0 d6 W7 ~| MCASP_RX_CLKFAIL# r9 @0 j+ y# N5 [
| MCASP_RX_SYNCERROR
3 E" y  o6 ^7 F$ |5 f" B| MCASP_RX_OVERRUN);
8 t/ w2 |5 W% j% u}
static void I2SDataTxRxActivate(void)
8 @0 m* Q7 Y  O3 b% {0 ?{
" j% d4 G5 J3 R: O4 [/ b" I/* Start the clocks */$ u; C8 i/ W; m5 e
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);2 i3 [. g/ `8 Y" j3 c5 e
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 i2 y* I! V/ v  ~7 q$ ]EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,1 K0 g' f/ h% Q/ c. g/ k) x* c
EDMA3_TRIG_MODE_EVENT);& |4 q' G$ ^# Y' ~, B# Z7 U& `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " i/ s. [# j5 `
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* }6 g3 q+ \- ?. F% \+ C5 `6 ?McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, D8 l" h4 P( M: r$ O6 z2 nMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
8 i% {* s3 G( E' b0 L' W" s- uwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! q! n  @8 O3 W: z% y) B% m6 vMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ y. V6 f3 j: E& T1 q$ t. [
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ E% V+ _9 h9 U* @/ R}

* h- M: D- K2 t! P9 q7 ^$ w8 h- A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! c" m& R% n, G3 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-24 08:08 , Processed in 0.054680 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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