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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11227|回复: 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,3 r: B$ ?' [) A3 J; u3 H0 H! }9 M
input mcasp_ahclkx,4 B' _- X. A! {8 T
input mcasp_aclkx,
- B, W7 a* ?9 H$ Q2 f( ginput axr0,
. N) Z: D1 S0 s9 R$ L; N2 _5 J" x) Q  n& ?( R$ D
output mcasp_afsr,4 p1 @' r3 R+ l$ V( r$ x
output mcasp_ahclkr,
2 w! Y, O; a$ T8 ?4 S5 P/ @output mcasp_aclkr,; J; C  _8 E5 x
output axr1,
; T4 L9 X, G4 [2 b6 N: R6 r( z
assign mcasp_afsr = mcasp_afsx;
- m3 J5 O  v$ `8 b: ^7 Z1 K; [assign mcasp_aclkr = mcasp_aclkx;
- d4 |) V: ^* ?" l& hassign mcasp_ahclkr = mcasp_ahclkx;8 M- _) b9 x" X+ t7 ]
assign axr1 = axr0;

- o2 D4 U: v( T% N! _
9 Y$ C# m, [9 [" V# b( h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' Y# d$ K  M* a
static void McASPI2SConfigure(void)
7 w1 z  W0 k9 z. _: G9 N; S) N{9 h% o/ R& ~# a# S  I/ g
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% B6 {+ J1 s; x, Z% M4 _McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 |- [1 W: d3 _3 w$ fMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 g' X% d# y& b3 X$ i& s2 c
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% N, T8 l  P& _McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 z8 c( G9 X0 l( u4 RMCASP_RX_MODE_DMA);4 E1 ~' v% \  h/ Q* H
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 L0 P# G" _. [3 Z9 D
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, h9 j9 Y: y& R+ B( jMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
% Z$ A- S/ u/ P2 ?6 w' MMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" Z# B& K+ c( r( u
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* U, K) [  J! Z: O4 c+ cMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
& d7 d2 U1 W2 |. B! z" FMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 N8 ?9 O7 E; n0 v; Q! O5 D
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 ~: r# A" t0 X+ H
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," R5 L4 m- Q  N0 W0 W% ?' v
0x00, 0xFF);
/* configure the clock for transmitter */
8 m1 P* @/ K) S2 ^6 kMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
0 _7 \% B" L6 C7 [6 s0 k' t2 v1 rMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
+ C+ w4 D- L" P8 lMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' p5 T. d0 ~) B. `9 @
0x00, 0xFF);
5 M* s9 l  Z4 v+ f% h8 Q! _/ D& Z* x: ?6 p
/* Enable synchronization of RX and TX sections */
" m8 k. t9 F% P- e0 K) K' [McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
# H( v' K" [1 N- T, B! EMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 j- y: \6 }: J. U& X& f' p2 F- O
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
, k+ U5 q& y6 {  K- b8 G** Set the serializers, Currently only one serializer is set as
! p! j; f  u/ N- [** transmitter and one serializer as receiver.1 V0 E3 f+ ~: x4 A$ V0 s
*/5 ]* @2 k- L% Q: J1 d- W
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);" P) g7 O  W# \1 V) y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' q6 c, }' u0 V6 s: s
** Configure the McASP pins
" E: Y8 _3 P  o% o7 J! o1 W7 ~6 t** Input - Frame Sync, Clock and Serializer Rx" s4 K9 g6 k7 `" A( {
** Output - Serializer Tx is connected to the input of the codec - q$ m; h0 I& M1 y9 u. F3 M4 E
*/6 A' Q& ~3 Q# U. J
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" P1 L  [! W% y$ u/ H- C% j
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! l# q4 l5 }" e1 Q2 x! d" W! s. z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX2 `0 o) R1 h7 l' `) n7 |
| MCASP_PIN_ACLKX, o* ~: C  U2 L9 [# N  N$ H
| MCASP_PIN_AHCLKX, t8 P$ X1 ^7 Q8 y7 S$ \
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( }9 r, I1 A2 E; @
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 2 D* [0 ?. `0 s. u
| MCASP_TX_CLKFAIL 1 N" Y( ^1 P, C- ~; ?  I
| MCASP_TX_SYNCERROR- g- D' E9 C0 S5 V
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) y( n- N( y) v# e
| MCASP_RX_CLKFAIL
" \8 n& b0 y! F1 B+ t/ G2 B| MCASP_RX_SYNCERROR 2 p8 T$ z8 `8 K2 x8 \3 K) ~
| MCASP_RX_OVERRUN);
. y( |- P; t- `/ _0 Y: h: P) d}
static void I2SDataTxRxActivate(void)
: Y6 g+ c" U7 D{5 T- H7 `7 ^0 [2 I
/* Start the clocks */
) x8 n8 v6 G' g) UMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 p+ a$ _/ g  P1 V% O% U
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 J4 N& a7 J/ jEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 V" S: Z2 r% D  e5 @+ MEDMA3_TRIG_MODE_EVENT);, F" _) y" E9 Z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, # d/ Y* {  {, }
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */0 I$ f: u. ]% Q
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, k) ~7 J8 t! \. G% uMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */0 K  [7 C+ W2 z8 P& z
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. [7 |8 C4 s% Z) y- Y: H( fMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* q( x2 l  F% b& }  r' S# XMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 u: Z+ c; _" f$ \
}
! {3 g" [/ H) v8 O' Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

9 B- O8 {) w+ D; ?" Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 18:55 , Processed in 0.039435 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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