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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,0 e! ?$ U# Z6 s7 |2 z% \
input mcasp_ahclkx,8 k3 N' I+ A/ e5 P3 a
input mcasp_aclkx,9 q$ ^$ U4 ?$ Z. j' A
input axr0,
5 h0 q8 v8 o, S. T# e% Y
$ d* k. f1 H) V. _; [output mcasp_afsr,
; I& z' U) A: Z2 }: toutput mcasp_ahclkr,+ {) p9 W  Y( i3 G, d  g
output mcasp_aclkr,' q; |# T, ]3 o' N- t
output axr1,
' Y, F( q  u4 n: _
assign mcasp_afsr = mcasp_afsx;
: h$ T, Z1 i: B# M7 t5 W& r* p) u1 z( |assign mcasp_aclkr = mcasp_aclkx;
9 B: v0 a( o+ S  `) g9 Rassign mcasp_ahclkr = mcasp_ahclkx;" \3 a2 ~% b( r* O9 R' M& I  B
assign axr1 = axr0;
) C: C$ z! `% X. z8 L
7 g: g" w8 R) l, v4 d) e) V% x5 [6 r
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) ]. w. a) M! X; u0 |( y( i$ K
static void McASPI2SConfigure(void)( F- W$ ]* l8 X1 g1 ?1 Q$ o, Z
{
$ v( z$ y- p6 W, ]  E. |/ _( qMcASPRxReset(SOC_MCASP_0_CTRL_REGS);' G- T: t5 U3 r9 O) Z) r  L/ s
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 T; C5 l4 ?  y9 ~6 L+ _McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
* E" Z) O2 o9 b( W9 P( c; uMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
4 @6 O- }4 O/ @/ PMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& Q! a" E% R  N' zMCASP_RX_MODE_DMA);  i% J# h, _1 L; C$ a( A4 K& Z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ p, a- x* i! E2 k0 X2 Q2 T4 K7 N  sMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
  K5 p8 O* i0 Z$ g8 s* H. TMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 0 j1 ]4 {( b) a9 c- a
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);7 q9 p, V7 T" ^
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 K2 l; g: B  z1 HMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; V' ?1 `$ f4 Y9 O' n. v  ^McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
, \3 ~6 M$ `9 z: W3 |McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
3 y( D4 |, p! C; U0 ~! oMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," V3 ^) k/ `# J9 @. _. W
0x00, 0xFF);
/* configure the clock for transmitter */# |- Z9 H2 F, R  m
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ |  t* `' E* J0 I% B4 f$ |( |  FMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 U4 w$ C0 Z+ U% g, b0 rMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
( u6 ?3 C" U4 v7 b- D0x00, 0xFF);
% Z: b& y" H/ H! j5 d9 P3 ^! Z+ r' U( F- I
/* Enable synchronization of RX and TX sections */
1 }( T! X, H5 H5 G9 g; I8 dMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */5 f6 q! H% g: ^9 _; u7 {- k4 I
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 Q3 U( y% g/ ~' @% H5 [, u
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" y2 h2 n% R3 d6 e) S
** Set the serializers, Currently only one serializer is set as* B# B/ F1 I2 m9 }: O
** transmitter and one serializer as receiver.
5 m$ ~. |  j- I' w) m*/& h' E/ j& J) b* _3 c
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ e  H+ U2 b- M* Z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*9 M2 R7 ~3 t& O2 c
** Configure the McASP pins ; K, w  E) Z7 m& L4 n5 ?- B) k: T
** Input - Frame Sync, Clock and Serializer Rx7 m) [2 D( D6 s/ y3 B
** Output - Serializer Tx is connected to the input of the codec : n7 j& D5 |1 d7 O) [7 X
*/
$ d3 d7 D0 c; FMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 O8 y! `* w& ^, f" I7 J2 K% V) V
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) A6 [. G) g! E8 y7 L, d
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& k2 S, O" P9 k5 X| MCASP_PIN_ACLKX6 Z! e& u' j3 B1 a
| MCASP_PIN_AHCLKX
' n7 Z, @: E9 |' v( P  s7 m| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% E9 L% s  r# E/ X8 U/ |McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR + R: ?, d& w0 E( [' @
| MCASP_TX_CLKFAIL 3 |) R3 i: ?# Y" I% _* [
| MCASP_TX_SYNCERROR
9 Q; b2 h& e7 g1 q. P- Z1 y: _| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR , L5 x" G( ^0 U
| MCASP_RX_CLKFAIL
+ N+ ?% S* F. L1 y: o9 L| MCASP_RX_SYNCERROR
" Q' B( ]* {1 i3 X( T1 T| MCASP_RX_OVERRUN);9 {% ^; C2 Z! L( }. G- ^4 n8 p
}
static void I2SDataTxRxActivate(void)
& [2 |. E7 w: V{
3 j, o! j; S& h8 x9 ~$ U7 P/ w/* Start the clocks */
* @: R: Z3 Y9 I$ @3 ?McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- J( g2 e: S  X: W; C
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 `0 l3 _6 L" J1 f% u. H% {& h
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  {) q# u( [) v6 |" k
EDMA3_TRIG_MODE_EVENT);
9 u6 a7 h5 C. }$ i0 g3 |1 w4 t( XEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( R- e+ K' L* N7 a
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" L% u8 W! l& P8 y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);8 s0 [' M4 b$ }
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */, w* k7 @9 \+ q& Z
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */1 H! ^, n0 v& o8 _! Q
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
# r  ]3 X( V5 z' nMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) V3 M: x) }8 E1 _' Q- k0 T; o
}
/ E: q: q  t& L* Y6 h) W( ]0 {) b
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% P$ r3 E! a  O9 a8 G8 a' V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-8 16:28 , Processed in 0.044330 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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