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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10603|回复: 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( V2 k4 c+ O) M& O
input mcasp_ahclkx,& \- R8 B" H* e" K1 u' @
input mcasp_aclkx,4 p6 W" m" ]  j: ^
input axr0,/ Q( w3 m6 e3 u6 X- W: ~
# \* s2 |; C1 O9 `' p! |* M6 h
output mcasp_afsr,1 `  N5 @# N: F
output mcasp_ahclkr,) g! I. w# M( G* v6 n
output mcasp_aclkr,* {! E# U% {' k/ x# o8 i/ P
output axr1,% {7 Z# s7 E. C6 I1 i, G
assign mcasp_afsr = mcasp_afsx;
, s* G6 s! E0 g( m* }. h2 T  D" tassign mcasp_aclkr = mcasp_aclkx;
) Z. c- d6 F& m3 K/ Eassign mcasp_ahclkr = mcasp_ahclkx;
: x5 I1 E7 Y! W% K$ @/ bassign axr1 = axr0;
& \* y9 Y  g# j7 w% D$ a) j/ R; f* H
4 _( `; ?$ R5 C- Q2 o9 q& c' _
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ Y2 H) ]( k) i" x8 i
static void McASPI2SConfigure(void)6 @8 a0 {: V" [7 K( J/ R( J2 D
{
5 Q! _( v- W. [5 b& D7 Z) _& h# T2 dMcASPRxReset(SOC_MCASP_0_CTRL_REGS);, x9 _' Z: b+ S) X8 k- I$ |
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */& `4 W" j9 \# |8 Z' ^/ D" \: A
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);2 f9 m. E( a3 B0 _# |5 q6 y3 A
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
# Z! k- ~0 ?/ m4 E5 ?McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- Y0 Z2 W6 |( v8 o. d, b
MCASP_RX_MODE_DMA);
; x/ j- ~! T9 |& p9 t, {! B! ?McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; ^. y1 }) j, N" y/ WMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
) j* g$ V9 E/ q; nMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" Z& q/ m( U0 {7 w, g2 g5 d" ]& ZMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
: U6 p. p, ?, d$ H% JMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, # I" Q7 {1 Y. V) J
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 `6 w. l6 y" Y8 k( X) RMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; q9 D  \. M! p& Q" I0 o8 i
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# }  m  ~1 @) w, o* [McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ J+ U  u! ^, h, R- u5 }& K
0x00, 0xFF);
/* configure the clock for transmitter */
; K6 f/ U) B8 v: D% V) i' x/ J$ PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; U( L) C4 D! OMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 k) E' z: {9 Y7 s0 ^) cMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 I$ s' }' _- E0x00, 0xFF);
8 y) e/ ?% q" |6 ~3 `3 `5 }6 Z! t3 q3 |+ }0 r
/* Enable synchronization of RX and TX sections */ % S; M8 i- P; i( M* O( S9 [
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 y2 C# S$ u4 ?8 e& f" \' k4 v6 x
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
, u, l9 S8 F8 U+ FMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*# ?( N1 w8 U9 }3 L
** Set the serializers, Currently only one serializer is set as' n6 q! O9 W& D$ g' m( Z" v. V2 v
** transmitter and one serializer as receiver.  M  e0 K2 l. l4 M
*/0 c+ s; O$ J- p
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);, N2 J  X& H* d
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*7 N+ y; m) y3 C1 M
** Configure the McASP pins # A; {; c; g/ P% v
** Input - Frame Sync, Clock and Serializer Rx$ T' x( j& I5 ]- W" a
** Output - Serializer Tx is connected to the input of the codec
( L# q1 ^6 o+ Y9 W) f*/
/ u# i, t6 Y! z% {McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ X! ]8 U  ~1 J& [+ n
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));* X( o) G' s% x$ r
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 J& l$ R0 m5 m; o7 L0 G| MCASP_PIN_ACLKX9 d  r" r  J$ ]+ w& R! r
| MCASP_PIN_AHCLKX8 t; w0 c6 m4 G* {. j& @
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */! f) n: l+ I& ]
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : K* \: U& ]  S3 o
| MCASP_TX_CLKFAIL
# ^/ g* d, ?1 i| MCASP_TX_SYNCERROR
# @- j3 x( V: ?9 Y6 ?| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
. R, p7 {# o( r* R  b/ v| MCASP_RX_CLKFAIL
0 D& ]5 Z- i$ n3 d& W; T0 a3 _| MCASP_RX_SYNCERROR
4 K  J* Y3 G& }4 Q, m; ^2 ^| MCASP_RX_OVERRUN);1 W6 W/ q: U, A, S
}
static void I2SDataTxRxActivate(void)5 S+ c% ]# |5 ]6 }, f: u3 X
{
8 p$ F/ J( E2 c% X5 |4 L! ~6 R/* Start the clocks */5 }; y4 M6 e8 D  F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
. j" z" c* Q& j/ `) u3 [1 _McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: q% F7 y: z  e# g' W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# F- H  E8 z3 AEDMA3_TRIG_MODE_EVENT);4 e# v8 {1 \% [6 `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / D# l3 s# o6 K( ^; N9 S
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 {: |2 |$ m, D- s5 V& jMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, [" y! ^% T( P+ ]McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
- q& l* N# e6 Q) R/ ^while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */7 [* A# J" y- [) N
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
3 L6 Z4 d$ D! W; t6 }% mMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);( ^& {( ~" i% x6 ^+ d! j
}

* `- U* g# v7 \# k4 y3 S2 ~
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

9 l+ ?  T+ T; e5 w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-10 22:30 , Processed in 0.044070 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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