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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12064|回复: 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,: W1 v' K; n5 |5 |
input mcasp_ahclkx,
* ^8 p( X7 X: g5 ]8 ?& ^input mcasp_aclkx,
; g6 h9 e0 n1 C/ u" binput axr0,6 `5 h/ m6 P: f' m

! J( D8 X6 v4 F0 J% B7 loutput mcasp_afsr,
) h  ?4 I4 r" \% i  |output mcasp_ahclkr,& d+ Z  o, m& Q( c$ M8 {
output mcasp_aclkr,
, e: L& S# x! K1 r1 foutput axr1,
6 a. z" G) Z/ Y7 x. X2 D# t
assign mcasp_afsr = mcasp_afsx;
/ y6 `" O7 Z. b; n% t5 Iassign mcasp_aclkr = mcasp_aclkx;4 ]7 {# y3 @! _' {  k
assign mcasp_ahclkr = mcasp_ahclkx;  h+ p1 X6 k; A7 H' \; y1 Y
assign axr1 = axr0;

# K) x- p( u+ A4 u# _2 A
. X# o7 U% U; x! b' [0 `' y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 f( ~2 g7 l! `. n/ I
static void McASPI2SConfigure(void)
' Z) Z1 J! ]1 g! P* h{! {1 |* d* w# q0 Q* I  Q5 q
McASPRxReset(SOC_MCASP_0_CTRL_REGS);( A* H  k# ]: E7 K
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' J9 T' x7 N$ z8 x0 M5 m
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: Z1 N' m4 Y+ y/ L' z" j1 }
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 L( ?! |7 H! a
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 J+ B3 Z2 b1 {4 a7 D. A# n( sMCASP_RX_MODE_DMA);
& M! R0 @% w7 k, ^( S2 C. cMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 R4 J3 p* O3 w# `MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */  w! R/ x  u3 Q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# t4 H% x2 G2 @# ^5 vMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);* N) N! d+ ~. [! B
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
, v  i# |0 J: QMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. h' ~' Z# A! r0 ~
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 P2 d4 W# \  _4 \, AMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' G% _% N! p! @/ l  v9 Y: g
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," q& n& v: s' _, g' ~5 J, ~7 h2 u
0x00, 0xFF);
/* configure the clock for transmitter */
, l* @% J  K: C9 b0 @  d. HMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);/ ^- h9 h  ?! N* t# e
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 1 q% O! @. f# L8 W# m
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 V9 D6 Q8 c1 W' w. ?' ]
0x00, 0xFF);
4 `. f) I6 E3 q7 [/ y: h: x
1 |& f6 U; \5 h* q( ~( i$ l/* Enable synchronization of RX and TX sections */
) a, k/ n1 H* k# Z  \5 qMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, h7 Z, k) O- l) G
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 J$ E. N) p* q8 c2 v1 _% `McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*, |6 }2 Y, {4 E8 O5 t$ Z
** Set the serializers, Currently only one serializer is set as3 M% n( K2 M$ u6 G; n9 [
** transmitter and one serializer as receiver.& |: l5 b  N8 J0 Z
*/
( u7 i5 P# ]% xMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 i3 O5 v: b- b, X# BMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
, W/ r- _8 h/ }. S& u& C** Configure the McASP pins
+ u3 ]+ l; M6 @- k** Input - Frame Sync, Clock and Serializer Rx
* u, d0 g5 I# F: e; P0 J* U** Output - Serializer Tx is connected to the input of the codec - g+ \8 \1 P8 D0 q$ |/ }0 R
*/. u( V* r- M8 D+ B1 G' J: s
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# G& ^3 W2 _" ]+ v3 f6 F- L5 DMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" Y: T' @# ?; D+ I& E: l8 A/ wMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX  q' ?6 V" r/ r6 k  p! F' h' C, `3 r
| MCASP_PIN_ACLKX8 D8 k+ ]" H" M- p
| MCASP_PIN_AHCLKX
4 C+ u( ^- Z: c7 ~| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
- {7 \0 w  d  M1 R; sMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR " G0 u* X) f; E
| MCASP_TX_CLKFAIL
. x) i* Y% ^, o| MCASP_TX_SYNCERROR
/ j/ ?) k! I7 f% q$ ~| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " `$ G& C! V* X; R& ?* w
| MCASP_RX_CLKFAIL. n1 z( I( O. ]' K6 m
| MCASP_RX_SYNCERROR
) J, n& H: e" Q- |. g; `& v| MCASP_RX_OVERRUN);
/ R. Z7 |; j* i% K}
static void I2SDataTxRxActivate(void)- C& u- F  c# m: T9 j# {
{" p& `( r9 S3 d6 D; U- s5 N9 Y
/* Start the clocks */
7 E  J5 R3 u* `* g* }' I, JMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);8 O1 O  V; \, a
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */; c( q. z* _" L3 @
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 f4 F& d9 n8 T, c& @
EDMA3_TRIG_MODE_EVENT);
# D+ m7 }  P  @5 k/ Y% KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 e6 |2 ~& z2 c; j: _8 j
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" O7 S: p1 q. e$ {  e3 \0 S
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);# M7 l- I* V* e' h% S" B
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
, f  c6 I1 _- W- u0 H# M0 Cwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 V$ O# u! e0 p
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);+ M* P( ]& }$ f. o
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 I5 R+ h9 b: q/ N7 G+ K- f7 T}
1 `0 O, L* N* a; r% S
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 \: M& ?$ X, W6 n2 @$ {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-26 06:57 , Processed in 0.039637 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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