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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
& D- E' F" R8 P, Kinput mcasp_ahclkx,
" O5 O4 b4 V$ C. Sinput mcasp_aclkx,
  R- W% j% y2 i8 X. kinput axr0,
' V. A/ D: \6 u. G& l9 w; J9 a- M  S/ d/ G) K  R! h$ \. u, K
output mcasp_afsr,) V% J) L$ B$ o$ Z* u
output mcasp_ahclkr,
2 `/ V! R( C9 O/ r, \9 B% [output mcasp_aclkr,7 c9 e1 m4 |3 Y. L5 R0 ~, `
output axr1,
% V, f! x" j0 }) Z
assign mcasp_afsr = mcasp_afsx;
+ r' J* V8 `8 X1 @assign mcasp_aclkr = mcasp_aclkx;
# w0 W, j: X9 w+ hassign mcasp_ahclkr = mcasp_ahclkx;$ `" D, G, {9 L
assign axr1 = axr0;
, q) i0 K' b8 {( c

) H$ c/ c, ^1 k/ t6 Y8 ^+ R) |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
* w2 s, E5 P! U2 n) W1 n
static void McASPI2SConfigure(void)& z1 M3 L% V% q8 x
{, ?% W& R- d8 g5 j0 t
McASPRxReset(SOC_MCASP_0_CTRL_REGS);' I1 r% w/ U4 R: F
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */7 N$ u& d9 }3 h9 u
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 d* s( D  Y+ k! l
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  H( ~5 E' l8 ?! V3 L$ |+ ]
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, d0 j. I. ~& B1 C* r" V* L3 n9 @
MCASP_RX_MODE_DMA);8 c4 _" Q8 ^' t3 M& ~) M: F
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 W& P9 u- n4 l5 x9 p% |MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */9 ~9 K: S8 J( S6 T4 o8 ?# B! r- a
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . x. S" H7 O" Y4 [$ ^( z/ X+ a
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);6 o$ m5 o. a) p$ H
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ t+ R2 J* M( B7 nMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
+ e4 r; _8 v9 O# L# H6 z4 i) J. BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 _: ?1 |6 c. t' XMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 _* F4 ^  Z1 {) Z9 ]% h; T6 yMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," R9 t* R7 f0 |' Y0 I' k* j7 m
0x00, 0xFF);
/* configure the clock for transmitter */3 a2 v1 |! E  N  H
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" k2 x: O1 E/ Z
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 6 ~3 @  z7 ?* T9 c% F$ x: B
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) E: r& [3 c2 P, N, x
0x00, 0xFF);
: s9 s( I+ L) }9 m8 p7 S5 d1 f, Q% L+ ]
/* Enable synchronization of RX and TX sections */
) O* T6 }0 S) B* h6 @9 H4 i/ WMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% d& ^7 s8 l% |5 C) c3 e
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
: A4 N* W) k) L* `1 d. M# R3 kMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  J) G' e7 ], O) ?/ X$ Y** Set the serializers, Currently only one serializer is set as% G4 r: L% Q% ^1 B+ `
** transmitter and one serializer as receiver.8 A2 _' X7 h- o1 u# G
*/# b1 x$ F; D' V: G6 k- s  |
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: I! \. P+ Z) [/ U+ F5 r5 y( n8 ^1 D; S
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
' J5 r; A5 {. K& M  A, Q5 }** Configure the McASP pins
# |$ H$ K& s' Y** Input - Frame Sync, Clock and Serializer Rx
  h% e$ J4 [. g" [, l- I5 Q# [** Output - Serializer Tx is connected to the input of the codec , x8 F+ e7 m) i" Z: o
*/
5 g1 \, O0 y' @' a: ZMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
: J8 A; y2 v* v7 J! m. T6 oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& m4 {  @+ }8 J. l* X, q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 ?; [7 {4 y# O: H3 b( }| MCASP_PIN_ACLKX; a2 ]- h4 ~+ n! G
| MCASP_PIN_AHCLKX- _% W% a! ~8 ^  I0 Q
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% Z. Y. `6 [; o3 }
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 4 G2 x7 Y. j9 E7 Q3 q
| MCASP_TX_CLKFAIL
: M: J3 A  A+ A0 \) c2 }, I| MCASP_TX_SYNCERROR. c* x8 D- Q. F, X8 I
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 T5 k# I- k$ ?9 o/ j: U, h. O
| MCASP_RX_CLKFAIL
" |( I. x  J5 f7 N1 i| MCASP_RX_SYNCERROR 6 I7 I5 T' k2 j9 f
| MCASP_RX_OVERRUN);
! k7 [+ Q3 Q+ P/ f3 J/ ]) Y! O}
static void I2SDataTxRxActivate(void)5 M/ J- E. d( j+ P2 f6 o
{% s) L. t' u' R% d
/* Start the clocks */
: u4 Z  }& A6 J1 [: k' CMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 J2 v7 K& v& i
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 m4 G( W3 p9 |* q: {! T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 j! i9 B' Z  p# e
EDMA3_TRIG_MODE_EVENT);
+ d6 x! n% r' @, l/ ^2 e% VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 }) Y5 g* f+ t: C# S
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: D" l3 R& W. W8 @8 p
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% C6 R& R8 m2 f: r) \1 K( v* {5 u
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */$ D: z7 N% O! U
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; Y5 E  s) a1 y0 ]/ v( @+ NMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
- ^0 Q1 B) Q- e1 X- D9 rMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 R! l2 J% ]* f% S}

5 R: V/ M8 K6 y" R$ f
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

9 ]( L0 U& j- S0 D( R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-18 00:57 , Processed in 0.041824 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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