MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9444|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,, a. l4 ?7 U$ C" A1 D. U
input mcasp_ahclkx,/ R6 W) a, s* `
input mcasp_aclkx,5 t% v+ M6 G- l% P2 H# W
input axr0,
; G, J1 n7 K9 ?$ w2 r: X1 H$ t  i9 _. |! z- R) t7 T
output mcasp_afsr,* {1 E' ~) R% N
output mcasp_ahclkr,
- `4 P" `5 w  p& toutput mcasp_aclkr,
4 T& h! L! \  y3 i# Aoutput axr1,/ \$ T- X6 H2 T# v% |% y
assign mcasp_afsr = mcasp_afsx;
( W4 i" K3 {+ ~  |) V* q4 [$ ]8 Rassign mcasp_aclkr = mcasp_aclkx;% Z- k2 B: M. }! M) d
assign mcasp_ahclkr = mcasp_ahclkx;+ |7 s0 F, n- w' b1 l
assign axr1 = axr0;
% t% U' j7 g4 E$ X! M
8 o4 |+ r: z- j* q  b' ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

) T$ W& U, W& ]- U
static void McASPI2SConfigure(void)
- Q- U; A& U0 X/ h4 E; n9 T, E5 S{  d, d: a2 {9 l; y' i' j
McASPRxReset(SOC_MCASP_0_CTRL_REGS);+ H9 {: ^: Z1 R
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
" w7 O: J9 N- |! pMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);7 m! o# R/ k' d
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */5 O( p) c( f1 S3 X
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# B6 P6 ^4 U* a4 U- {MCASP_RX_MODE_DMA);
; L# V) W+ n. ^; g+ G# SMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- h$ L0 |9 a+ w6 R6 A. BMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// k# H! L/ f# k3 a- }
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
. R! h* _  z4 H4 _+ SMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);1 D  \! s3 O* f" t: u( a
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* M  X1 R' b! iMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
: Y: L% k/ w- z5 h3 f& ^4 B/ DMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. B; O5 P# _  d3 tMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( Y! @3 _9 ?3 D' k- ^" N5 sMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: b& F4 S7 F2 C( K& S- E
0x00, 0xFF);
/* configure the clock for transmitter */
% t5 p6 [6 H1 {4 @McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);8 F4 X- c7 I  ~0 G# P
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 9 O3 l9 d2 h0 I
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 J! m7 y) b- ?0 I+ b/ }- L# A& `
0x00, 0xFF);
" k8 v" T2 ^0 |
% r$ T/ O* {4 R0 j/ b, ]$ z3 t9 o/* Enable synchronization of RX and TX sections */ 3 \. e) \+ }& u
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
3 x4 a/ i3 w$ j' \& J& B  eMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 w! k3 Q$ s% V% \6 w4 J
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*1 p; B! M! r3 H! Z
** Set the serializers, Currently only one serializer is set as9 m2 V0 o) F, W
** transmitter and one serializer as receiver.( F6 c$ y2 J8 ]. D5 |8 n
*/
# \, o- @* L6 s  |" y4 u+ kMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
$ O+ i: Z# v5 o/ K& O: B# WMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: d! g% k/ o0 j  }- E% v; F
** Configure the McASP pins ) @2 ^0 j' a- K, q. G! |3 b
** Input - Frame Sync, Clock and Serializer Rx
- |/ G2 J$ I: G8 X- r/ U/ @** Output - Serializer Tx is connected to the input of the codec 4 f7 i% ~# y1 p- u2 `- I: F- p& X
*/
; V$ m; _& k! \( l4 K9 P! ZMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 p) V% P" H* k8 YMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, m4 q0 I) [# U2 k0 X: w5 CMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* r! L; Z/ f+ f; c; ^
| MCASP_PIN_ACLKX% q; N! U2 F/ z9 P: ~( Z
| MCASP_PIN_AHCLKX
1 K. \) i( V1 H. x| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) H9 D7 @+ y8 }) X. N
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR   _& R. c1 G- \. Q. ]" U& A7 U9 k
| MCASP_TX_CLKFAIL
1 g( \) k2 ?8 @. B6 Q# e5 k  s| MCASP_TX_SYNCERROR
% s' j' e2 D: U- Z; b: A4 J| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " J# {2 I8 x% t' D, O' h# ^
| MCASP_RX_CLKFAIL
: K; r5 p6 P1 r) l1 _| MCASP_RX_SYNCERROR - W! q3 S) @7 J* f$ \
| MCASP_RX_OVERRUN);
4 U1 W9 e3 e$ {}
static void I2SDataTxRxActivate(void)
: o9 t. }" P8 L' ~{
* N7 I5 I3 U+ y$ F* s/* Start the clocks */
. O. V! T$ A; K$ Y, `McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);) Q/ j% `1 \8 y1 v2 s( _# H
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" t9 j- Y! F- y3 Q$ hEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
' Q3 C+ U/ E( {, }: x, JEDMA3_TRIG_MODE_EVENT);% P9 Z! y. u2 G" f; {
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  h5 T. o8 F1 j6 ^9 r; u; |EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ |" [% E* d; [
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& H) Y9 u+ G! O- i# s
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% a# r: M3 N& F; j& b6 bwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */, Q+ n+ s: Y+ q0 y, G8 t6 o' U
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);! ^% {6 a( i8 _) v/ h1 ^( P" J/ k. C* X
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
# a7 M7 x2 D1 f}
& N" p) x; k! P" ~( r5 M4 V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
! l6 j% o0 I% G2 W; Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-10 07:53 , Processed in 0.038518 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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