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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11185|回复: 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,
8 q5 Q. E. _8 J/ b/ ainput mcasp_ahclkx,9 u( e# @4 y" b. a/ s" P
input mcasp_aclkx,
  {" o8 ~1 O) N! L2 }5 |# tinput axr0,5 z$ i/ Z- S1 Z' q% u3 {
6 X8 E* I0 y# M- `/ ^
output mcasp_afsr,' W2 H  [8 a; @! |' f
output mcasp_ahclkr,
6 f/ T# p1 ]9 E5 Coutput mcasp_aclkr,: |( J+ j. s% d% A
output axr1,
3 @2 I+ Q- T  B
assign mcasp_afsr = mcasp_afsx;
0 W0 I# q/ x% d4 v0 yassign mcasp_aclkr = mcasp_aclkx;& L6 n2 N6 h/ @, j, G0 |& {
assign mcasp_ahclkr = mcasp_ahclkx;
1 c& u0 |% D# }  v- q& m* uassign axr1 = axr0;
) b; v: d7 G" C5 k5 k/ g

% L4 d6 S' U$ l. d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 ]! M8 @7 H7 ]% q; d& f8 @* z
static void McASPI2SConfigure(void)8 M( C- Z# l* B. b8 }' l
{
. P* y3 N# p# K5 T0 q" L& aMcASPRxReset(SOC_MCASP_0_CTRL_REGS);* s5 s6 ?. g% w: _
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ I! }- B; x6 o' \
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 ]% V! a$ D0 D3 ]
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
' [& r: T3 ?! e6 e3 bMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' d3 j! @6 ~$ jMCASP_RX_MODE_DMA);- V' R9 v) F$ A- m, b
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. K# z. v& r# r% A5 u/ o' s
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// V& c) {3 \+ }: Q5 K/ k
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 1 U! _# w4 v5 p, s- G
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
$ ]7 X  G' L( s. G# C, lMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / ?3 w! K: j# M
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 ^& z# ?2 }0 m8 F2 u2 q' z
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 g+ i$ P1 B7 R) F  D% HMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 2 n5 L( o) D3 b9 L. c6 {
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: H4 t% h( N8 p" c! m; B
0x00, 0xFF);
/* configure the clock for transmitter */  s* T1 f5 G9 U  A
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
4 }1 r) I6 z+ F7 BMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
2 Q/ l* C- x6 Q* {& S- t+ |0 nMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# s. d7 V  h$ Q' C0x00, 0xFF);
9 R0 c3 F( \! E- S" F+ v/ ]6 F
8 T) B4 G, t0 k/ p' G/* Enable synchronization of RX and TX sections */
5 Q2 i% R$ e/ N: c! j# @7 i7 kMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
6 ~# A2 v2 }' j' bMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
- z! |' S6 b# ^McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*4 n7 Q0 I, y8 e4 {0 Q$ c. l$ H9 O
** Set the serializers, Currently only one serializer is set as% X1 Z0 y9 o% u- P& D
** transmitter and one serializer as receiver.
+ F; |+ O0 K% w1 d) w*/
: f) I7 h6 k6 U( q. @" UMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
* o2 @7 C" Q/ Q: ]7 M+ Y5 Q6 `3 v2 RMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) ]# Z" Q8 x4 m% l; T' z** Configure the McASP pins
6 R. F' f, }% F' ^* A5 p7 W** Input - Frame Sync, Clock and Serializer Rx+ I6 k! e" g$ p7 V
** Output - Serializer Tx is connected to the input of the codec 0 Y/ B4 n7 n0 v8 A% M: _+ @- `* G
*/. |+ P7 W/ K' |( u, J
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);; x0 R/ c# N/ j5 U) y  v. E
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 E# o4 i! q: _
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
" k& I! F% n  q5 F# g| MCASP_PIN_ACLKX
. k! \' ^; z+ C) P' A| MCASP_PIN_AHCLKX9 r9 P1 x6 T5 w2 C( O& {
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */" y6 y1 [" c* T- U8 ?. c
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR . ^- g; }( d& E5 i9 U
| MCASP_TX_CLKFAIL
; ^7 k9 m2 L% S% k" Q| MCASP_TX_SYNCERROR
9 h1 l9 J+ T3 P4 J) R* c| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & D% g+ R" A0 F( ^* n8 d: i6 b0 `
| MCASP_RX_CLKFAIL
( m3 P/ y4 V! K  }8 L( w' _| MCASP_RX_SYNCERROR
1 s4 L. N* H$ n# ~* o/ }| MCASP_RX_OVERRUN);
9 v: _, {! ]5 V% M% k}
static void I2SDataTxRxActivate(void)/ V+ z% K' u+ i; S/ ^/ c6 m  j2 @
{
, i- g6 }. r' Y; C* ?/* Start the clocks */
( J, e" h+ x# d2 B' s8 d! M0 JMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ F7 g% U9 K2 ~8 J2 B) }$ h
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 W- F6 R3 e2 ~$ X9 @& m
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% V4 L4 m$ j$ sEDMA3_TRIG_MODE_EVENT);! l) X( q6 U5 l1 Q* `5 e
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, . ~3 I& t2 y; V1 a5 {" _7 z, k
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
4 J/ Z+ p* |1 Z; f7 ^) f9 gMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ M& Y0 }; `. S' z0 P! D
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ h' ]3 ~1 `& `% W& uwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 H; J8 B6 @: |& X5 u7 hMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) l5 h5 U, u/ o+ IMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& {5 j9 g) g4 M$ t}

# p6 S, _. R; W: Q+ v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( R* @) W6 u6 }6 g* F$ A/ {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-26 15:37 , Processed in 0.039606 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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