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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,! s. p2 D: P3 E' g" Y& M
input mcasp_ahclkx,- a8 c5 R4 l0 r2 L2 f2 B7 {" q
input mcasp_aclkx,
0 R! p7 }) Q6 u5 `input axr0,
- |6 I9 e; P, X7 `& J2 E; z  |" c5 W9 B/ F  z8 g( P
output mcasp_afsr,% \, P0 }8 N6 \8 p  G
output mcasp_ahclkr,2 `+ K: ?  K: C' r0 f0 V/ g
output mcasp_aclkr,0 x/ \/ D; i8 l+ ]0 P
output axr1,% w- `7 C$ L+ T5 _
assign mcasp_afsr = mcasp_afsx;2 d# h; e/ v% t- r; g. n& K
assign mcasp_aclkr = mcasp_aclkx;
# Q5 I! a2 V! Zassign mcasp_ahclkr = mcasp_ahclkx;
7 k$ f: u7 ]8 Sassign axr1 = axr0;

. D; t. i! \9 M1 [# `
" T4 O* Y4 I0 L6 o: m
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

* }, v# r( A- e, K
static void McASPI2SConfigure(void)
# H7 i6 T( |. L( z: Q{2 G" y+ }/ |" p/ t0 w& [0 _& ]# f
McASPRxReset(SOC_MCASP_0_CTRL_REGS);: J3 H2 }! f; F, U+ x2 d5 P6 |
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. Z3 p5 [. X  n+ T2 @
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
* R% {' c; r. o0 gMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */6 Z* P% A  {8 T4 a0 r  q9 J
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 H$ k4 D; F, Y$ r; f& u: ^' `MCASP_RX_MODE_DMA);0 @5 t& L- F9 ?1 P7 o' g4 \$ U3 r
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* A1 M: b0 E9 F3 t  I* \3 V3 z' S9 yMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 J7 |" S% s' a. a. R; VMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! ?4 [( Q/ ^$ A- }4 Y" C: ^* l9 G0 g& ]MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 x& n4 H  P9 I. ~" W3 t) ~McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 ^  x. B3 D6 a" J5 ^0 aMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
: r4 o, i$ q) F1 D1 j1 g& r: UMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  O( [1 y3 V. y: k: Q/ DMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
3 `" K1 `, @3 L# kMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ m) R( m; G6 ~6 ]) x- o5 n0x00, 0xFF);
/* configure the clock for transmitter */
1 a- g9 \* X1 e5 P, ^) _  `McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( E$ m( |2 Z/ H& P$ {McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); , t% H3 n$ Z5 H1 m* G# S) p: B
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' H+ v. O$ |) h1 ^: H0 {, \
0x00, 0xFF);
; x* `/ Z0 Q1 ~0 e; v
/ i+ y8 o) w. G6 S( G9 j/* Enable synchronization of RX and TX sections */ 2 a# i8 |$ W: d) y2 x( H  e8 t  M
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
# @7 Q% w/ C9 |; x$ _4 L# H9 n! d- BMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 W) K7 q7 J" C, J3 @McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- V! k+ y) ~- _0 k5 A
** Set the serializers, Currently only one serializer is set as
# J. ~* m/ l- l** transmitter and one serializer as receiver.
( `8 J2 A" S6 _# @2 M4 `! v' C*/  U2 A; [  U3 O0 C2 ~
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: C0 n/ P. `$ v# T# t
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
5 V! c2 e: p8 n** Configure the McASP pins
) b! V2 [, p6 x** Input - Frame Sync, Clock and Serializer Rx) p+ Z' ^7 R% }" p
** Output - Serializer Tx is connected to the input of the codec
$ {% k4 l7 K% a*/8 y) x& v" t7 K% b2 Y
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ l, \, C* o3 w) |0 n
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
' r) L0 M6 k: e4 V# S2 V) UMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
1 P6 ], ^7 y# k% s+ Q! F; H4 r| MCASP_PIN_ACLKX
1 x% Y) u; J4 f0 Q' ^* |% l| MCASP_PIN_AHCLKX
% r" d5 D1 r6 Q) m2 K! A7 E0 J| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */: y: O0 U, Y( y1 m2 C! U) x9 m+ T
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR $ ^& t8 i4 D) o+ c5 n+ a
| MCASP_TX_CLKFAIL
+ V, R5 p0 b$ N. \" q| MCASP_TX_SYNCERROR. ?  K- y% u8 V; T
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  H7 ^& S5 d1 J; k3 s| MCASP_RX_CLKFAIL
) n# \/ n3 [9 k& C* p| MCASP_RX_SYNCERROR + J0 s2 V' G6 W& D2 L; E
| MCASP_RX_OVERRUN);
( j7 F4 a+ w9 t0 _$ k' U- Y}
static void I2SDataTxRxActivate(void)4 x# a5 v- G2 Z" x4 x9 \, A
{
$ v$ E$ _7 b5 `8 l1 i" V5 Z1 y/* Start the clocks */2 G; p9 H5 u1 j
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 \8 o% K  j* t4 U# `' C/ _4 SMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
* N8 V5 @7 j7 C& pEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ B9 [0 R) D! C. I& f; KEDMA3_TRIG_MODE_EVENT);, r3 K" k4 M; o5 j$ Q( x' |; X
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
$ q  v# P+ `- F( eEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 F2 ^- ~2 r: i) N) E( k4 RMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);; Y& a, i+ O9 w5 x# P7 k  M
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */- j2 \% X6 X) j
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' C& n% n, d5 W/ l9 K" R  nMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" `/ E  [& e# N2 g0 cMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 X/ t, R  K+ P}

3 R8 s. l' v1 H, ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

2 G  P2 l7 E% f1 E1 u+ R9 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 09:19 , Processed in 0.037851 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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