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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10983|回复: 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 v1 G: g- x( ]/ l& p1 J- iinput mcasp_ahclkx,
9 i! q  f2 [! w* u, s. A) V7 \( ]. rinput mcasp_aclkx,4 U$ o7 `% _$ r
input axr0,
9 \( i3 r+ X, w2 X$ m7 Z7 o
2 A* v. e; T1 }$ I. T( Foutput mcasp_afsr,
/ i/ q' Q: n9 h- |3 F+ {output mcasp_ahclkr,# h8 ^6 @- m* A
output mcasp_aclkr,
# D7 i: a9 A$ O/ Y8 h. e5 h/ O! R6 uoutput axr1,2 Z& P1 B3 `0 m# |, A0 L. P
assign mcasp_afsr = mcasp_afsx;  b& ?6 d. U9 r# W% y0 s/ }% y
assign mcasp_aclkr = mcasp_aclkx;6 l* F' _; k, p/ M( k, L/ E1 R
assign mcasp_ahclkr = mcasp_ahclkx;
& \# @& e" z) F7 lassign axr1 = axr0;
! s! l/ P* b. Q" T

" \4 @/ Y+ j* K- z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ K+ Q- Y/ c3 }' x. x; e8 _
static void McASPI2SConfigure(void)* u' N: Z9 j. W% ]5 L( c
{
6 M! E. e& `7 XMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 ]* E, `" M$ @McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ j$ U/ u/ P& r% N0 `
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& d, x7 J) ?4 }8 S" y; M
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
& h+ L+ C0 p' t' FMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; Z) M: p% T9 p: [7 G
MCASP_RX_MODE_DMA);) R( R, e* k% g. {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. ~5 J2 d" s2 X& \5 ?$ r0 j4 Z
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */' @- X9 W* x. q' e8 |4 o' H/ c
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
0 i- G/ A5 u6 l, y% s; x2 FMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 P3 U5 P/ n( gMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 M: i+ o) c) Z/ y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* F6 U2 L7 E- O3 H
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* D7 U) W9 V9 g. @McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . m; _: |! `8 A
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% [# \+ q) K) K! N. B% y! O+ Q% N0x00, 0xFF);
/* configure the clock for transmitter */. U) W6 L* E0 S  z1 V  _9 v
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);( l% f# _" o. x0 t. K6 X
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 2 L4 |9 t, U0 ?3 C
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 i! k1 D7 D2 n# \: e( ~, ?
0x00, 0xFF);
% T( O+ S  _% L+ ]- T
' e% q0 G8 Q) |4 }8 O/* Enable synchronization of RX and TX sections */
( s# ]8 I6 r  @& P1 S) L9 e" s; q1 WMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
% j! S7 K2 X, N5 q/ P, B4 HMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% W' R. P/ W. C! O" B* a; N: q+ pMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*& f! L+ E2 r4 k* W! m1 B* h
** Set the serializers, Currently only one serializer is set as
3 u- i1 L% j) V4 j# C9 g** transmitter and one serializer as receiver.& w/ g- F" I6 @/ U" I0 E
*/
0 k2 u5 o* o8 O& i9 b& fMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 ?, J8 j& i$ d
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 s2 F5 F* i, r; g** Configure the McASP pins 5 y7 C' Q  ?& q& f
** Input - Frame Sync, Clock and Serializer Rx
/ {: \' m# Z; u9 Z$ [** Output - Serializer Tx is connected to the input of the codec " D. s$ h4 R  }6 W9 \
*/
# X! y" Y' h; jMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
* i) E7 H2 Y9 h5 oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));3 Z( V0 Z" ]# D% q- y! F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
8 E# i: A* S: V/ x3 b, O! x| MCASP_PIN_ACLKX
4 ?; N- L/ n6 A/ Y* g6 C# m| MCASP_PIN_AHCLKX
. `/ I3 g0 P* E) A: G6 R' C| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# |: Q/ w. g% O
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 m! J* n: I5 l2 ?
| MCASP_TX_CLKFAIL
- ~( ]1 B- P9 v4 K6 T, p| MCASP_TX_SYNCERROR
+ O# Q$ W: a2 O+ ]1 p# X- M| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " c5 d% Y5 I$ m; h/ u
| MCASP_RX_CLKFAIL8 q( U; N" f: }3 |& d: T- D8 k
| MCASP_RX_SYNCERROR # \( j3 i1 A* V; b
| MCASP_RX_OVERRUN);
) S, M2 N/ \9 q1 b* G5 `/ D0 ^}
static void I2SDataTxRxActivate(void)
. q) [- n$ a5 Z7 x{( b: M" U4 w, f. K: K" m7 v
/* Start the clocks */
( w) o0 @6 f7 o: e! hMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
% y- F0 ]/ ?  g5 xMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 d( T- Y7 L/ j6 F/ k0 B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 Y) Z; d" e* q2 f; E
EDMA3_TRIG_MODE_EVENT);
7 E  S, n3 G0 E( h" ~, S7 o. |5 zEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
/ B* \6 b  o5 L. v" H, yEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ ?: T7 ~0 {& BMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 B. o5 B; q# E+ P
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ M4 c9 g& {3 Z2 x+ Jwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! X3 Y( |% [1 z" E8 O# |
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);, ]5 V8 a4 m0 l# t: e' L3 V, n
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( G8 i* i/ D' i}

+ i/ D: j! i1 p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& x& o$ R6 E! U; w( \+ f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-21 06:35 , Processed in 0.039764 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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