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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11221|回复: 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,
- z0 W4 A% N6 W6 u8 Z  sinput mcasp_ahclkx,
% ^0 z% x% V/ z% X! einput mcasp_aclkx,
; C  j5 r( h( @0 w$ f- X( x" xinput axr0,* ~7 z% z; D1 L' [: K
# S$ W; V7 F* S0 {* [* k& C
output mcasp_afsr,
6 A/ R- s1 |( [) X7 \4 toutput mcasp_ahclkr,6 F3 {7 l: F/ A7 k0 Z
output mcasp_aclkr,+ l; y  |  `  B1 V( v, v1 P; _
output axr1,9 l6 c+ a* N5 l3 w
assign mcasp_afsr = mcasp_afsx;
/ E+ @+ K( k' S/ |5 Nassign mcasp_aclkr = mcasp_aclkx;
% L' J! z* `# F/ ?8 {assign mcasp_ahclkr = mcasp_ahclkx;. q5 f, U. e) V+ R  l2 \! c; N
assign axr1 = axr0;
1 m2 f3 m* I9 l& p; ]
% a) b9 M' N/ w) }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& n0 h2 D$ r' e' h7 ?: M
static void McASPI2SConfigure(void)4 [- _: h- [& J! H& ?6 w4 \2 Z
{
& x3 p; i& O# _1 Q1 H, eMcASPRxReset(SOC_MCASP_0_CTRL_REGS);  a& U5 W- l% M3 Z0 K
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* U7 Y1 ^6 E+ j2 @: j3 N
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
* J$ f$ P  i* J, y% s' gMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */1 O& X4 h$ n; D: \
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  W+ E8 F9 K  ~MCASP_RX_MODE_DMA);
" g* _/ C/ X  I3 f8 w* V/ TMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 C; k, B$ O2 E' f. \MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */0 w1 P  Q3 R/ `1 ^5 t* X' m& S
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
* k3 ^0 c3 U+ L/ n1 s1 T3 F  N# s+ UMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 C6 {6 L& f9 v7 _& n7 R; C6 e
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 4 T) `# K8 R0 G
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */2 t5 j3 W" \7 k3 v' j
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ c# D  ]0 y* ]% t# ^- ]: r5 h  rMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ h3 T4 K& U- `6 r# x0 l; |/ PMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 z+ A1 a: {  k
0x00, 0xFF);
/* configure the clock for transmitter */1 H- |3 L$ ^3 q. K1 w$ [( ^
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* ]" o4 N2 y! e1 O8 y6 b! P
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( g! D( `/ u$ G+ J9 ?) j; U% l* I( H7 kMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! z6 Z6 ^1 O+ U2 W
0x00, 0xFF);# N; m# `: D$ {7 v  a( W7 I

& v+ Z2 h- h9 v$ c" E: d/* Enable synchronization of RX and TX sections */
/ u/ D/ t) B, w/ ^' j8 S5 N: ~7 KMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */8 u: r$ O& z! b: S8 p' E$ s; E
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' D, t/ |1 E& t9 Z6 d. qMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*6 K& X9 @- E0 d* i
** Set the serializers, Currently only one serializer is set as& ], B  x. [2 R( w' n) g' w
** transmitter and one serializer as receiver.. v6 k# s& N$ H" |% f( q+ j% {. i
*/& C; Y5 _& ^1 u8 _
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) t% C" G. s8 \- `  U
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/** f9 k* f, |6 j, ?
** Configure the McASP pins
) e6 m9 }( x( C$ Z** Input - Frame Sync, Clock and Serializer Rx! O0 v" |" z, E8 Q: x0 \! ^
** Output - Serializer Tx is connected to the input of the codec
$ X+ e* C8 A9 y8 L) D+ s% `*/
$ l' y, [+ d( ]3 }McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 O7 |% N( q. |' D- g6 C
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! M) B6 x5 ]" |3 \! aMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 B/ M0 L7 O2 @% S& j
| MCASP_PIN_ACLKX
8 U/ ?. R& ^; l3 L| MCASP_PIN_AHCLKX
% d. j3 C" ?% G, g. n4 _0 k3 P| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% ?# ~! I) W* j/ EMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ' U6 _7 h+ ^9 q2 M/ q
| MCASP_TX_CLKFAIL
# s7 o  t' ~3 O5 s% m6 n| MCASP_TX_SYNCERROR+ T$ p0 X* S* W8 d3 W2 ]
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  Q# y- y3 ~2 p( {$ V* b9 j2 g| MCASP_RX_CLKFAIL2 [8 X/ S% q3 k' X; J3 T
| MCASP_RX_SYNCERROR 8 j" n0 M0 Q; T4 Y! l9 a; @
| MCASP_RX_OVERRUN);
( Q6 |8 B  e9 y3 P1 X8 Q}
static void I2SDataTxRxActivate(void)8 g* J' _' E' h+ B7 I2 ]: q4 m- C
{; m$ v3 H8 Q1 d
/* Start the clocks */; J: ~4 h. C% i- N
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 T$ H9 k( P) m: @% mMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: X( o( {( G/ P" G0 u
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 G4 y' N3 J; m( P, V, K0 q
EDMA3_TRIG_MODE_EVENT);
/ p; N% R4 `3 @EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, # m& S) h* S4 m% I
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */# l6 H7 j4 T5 k4 |; A2 S! V
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 z4 Q" B, A1 b4 p3 _# c  f: W
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */; z$ `7 o: b! C2 D3 \& e- S
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 ]- O) m. H8 M7 W: [
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);8 p; B; X, ^6 J4 M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
, ?' X9 M: d0 j+ @}
6 V- L7 z9 n* o2 |" O0 ?' {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: ]+ B" R/ c" c  g. ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 15:39 , Processed in 0.040078 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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