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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10989|回复: 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,
# E4 F, k7 S8 l6 @input mcasp_ahclkx,
9 R) t6 g/ W/ ?input mcasp_aclkx,
' \5 m8 S) j) I2 B( n$ linput axr0,* p9 _* Y, x8 ^7 J

& t! E! m3 I  q' B, ooutput mcasp_afsr,* b' Y  J+ I' p* [/ ?$ y1 D
output mcasp_ahclkr,
9 z+ ~0 t0 j& S, D$ C+ [7 [) _output mcasp_aclkr,% b: A5 b( }1 _8 T
output axr1,0 `4 h, H" o) |
assign mcasp_afsr = mcasp_afsx;
3 f4 x; g# w- `9 t1 j3 @assign mcasp_aclkr = mcasp_aclkx;+ r) l$ p; q1 w5 l% @: [
assign mcasp_ahclkr = mcasp_ahclkx;9 d/ S( v/ z6 g: ^; P
assign axr1 = axr0;

  u* m* N" T6 a4 t3 j5 y4 E: u, k1 F' q/ t
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; E0 {- J/ ~7 Y4 Z1 c
static void McASPI2SConfigure(void)
7 v* j3 f( y  G* q+ ^0 Q4 Z8 q{8 X+ k4 ^  q9 G5 o6 }( u5 S% M
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
, k/ c* r5 I' J  J0 I  J. y0 m" z( WMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */4 \4 l  u" P# u. Y; c6 Q
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' E" \; g# Q" l+ ?  CMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
# ~0 S3 u; \2 V) x5 V& u; P. rMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 m8 O. e, _; }, O
MCASP_RX_MODE_DMA);
  e& C9 t1 A; [& eMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  P! v+ r6 z, v& Y6 W9 S/ g8 o3 Z! QMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ ]# |& d6 h, M! m: Q8 K  C1 yMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, & b& F& @- r% l; g5 ]
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! I# G: Q  X6 k/ R* p* h
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# i# r6 ~. H' ~* g+ X! KMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% d+ p9 h3 e- u2 m+ }
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. S; A, M. j1 P, R8 p" RMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
4 s& S! q  E1 Z8 Q- FMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ I. Z" E* N( P) D# w: l$ ~6 r2 D0x00, 0xFF);
/* configure the clock for transmitter */
; t3 [  B7 x% }/ hMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 F" k! T& R: ]# X3 l
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);   _; k/ w2 B  U# Q5 `, @
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
0 [  l. G+ F, I1 n0 l& p' Y2 d0x00, 0xFF);
7 y4 |6 M! \; _6 n0 Q% ^; Y
% `( V# ]' P5 [9 W+ \3 h/* Enable synchronization of RX and TX sections */
' o. D# E. _  z* t! S/ TMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 w2 {$ K( V& P) ^
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
: Q8 r+ q8 c. PMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) O% H4 r& h, i+ }. R4 b" _
** Set the serializers, Currently only one serializer is set as# E! y3 `4 y- }, l7 D
** transmitter and one serializer as receiver.
% l- G, g# {* p*/
+ T# r! {% }" h) ~McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: \4 R/ F7 K/ [. M/ o# Q& T3 x# c; ]9 X
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
' L8 [+ B& w; x4 k* y' z" z) P** Configure the McASP pins
$ F; L% m2 f4 z* |* m& S( c** Input - Frame Sync, Clock and Serializer Rx
- n( F. d' s& L4 L5 u$ e** Output - Serializer Tx is connected to the input of the codec ( }" |9 d: v  X- `9 V
*/; E% X' d3 ]- e* n
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: W+ i9 I6 R, E5 p
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
# I7 f/ z7 C9 nMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( d( S+ t% L7 N  u| MCASP_PIN_ACLKX
6 {% t2 n$ O' Q) t9 y- H0 B; M| MCASP_PIN_AHCLKX
( w" t# |* j& @: j  `7 l: h5 O| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& D; C( {) x& Q) }  pMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 \6 T6 f! m$ @* Y2 D| MCASP_TX_CLKFAIL ( ^6 z+ x( |0 p7 `: b6 m
| MCASP_TX_SYNCERROR. i/ }- Y7 ~1 A+ g' S( W
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ; ~8 {$ ]% ~7 ?6 o; L0 ~+ {
| MCASP_RX_CLKFAIL
( X" H+ W- s7 J| MCASP_RX_SYNCERROR
/ |) X# W& z' \' }) O5 A| MCASP_RX_OVERRUN);
# b3 ?2 s( f) u4 P: L}
static void I2SDataTxRxActivate(void)
3 E) G0 _% @( e3 v( V* J* o{  M9 G1 q9 L; H- A1 c
/* Start the clocks */
2 K  i: |  f1 t9 o4 @* [McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 A' N! \% a5 S, u$ }$ `
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 M0 a$ ^. K7 f; U* Y; n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& T! @# f+ o) ^/ K3 VEDMA3_TRIG_MODE_EVENT);3 ?6 ?- x' k' A; d. m6 W  ]
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 5 g3 g7 u. z9 V) g& g9 X( K
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) T$ B! u, {1 u" X0 f) Q) e
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  s# e; L! s8 g0 o) z
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */$ w6 w9 ?1 l& l
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! W" F) i! }1 S7 ^9 P6 G2 XMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 r7 G4 ]4 g7 C+ H! H
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);. E/ J; n/ c0 p( m1 o
}

8 ]$ T7 U, F# a+ r5 _1 s
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 Z; b0 C% k" }. `; E  ^2 ~! a4 q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-21 11:54 , Processed in 0.042778 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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