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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1210

积分

金牌会员

Rank: 6Rank: 6

积分
1210
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,2 y: D- c" r/ c* o' j) T
input mcasp_ahclkx,
( w! }0 r% y2 ]& E" x) p) kinput mcasp_aclkx,
' P- C# d1 K! A9 }; s3 R/ Minput axr0,/ h. C0 j  }5 \0 K6 x

, p# `( X3 n* u' F5 n1 c$ {' y2 Youtput mcasp_afsr,' t  b' p4 y# s5 i; C
output mcasp_ahclkr,: H" B0 N  v  c8 t1 H
output mcasp_aclkr,
  n5 A! x5 [  B4 goutput axr1,8 j4 I9 g6 c/ z
assign mcasp_afsr = mcasp_afsx;$ T/ L1 h1 U3 z, m0 A
assign mcasp_aclkr = mcasp_aclkx;1 M7 {  D, o) S9 W
assign mcasp_ahclkr = mcasp_ahclkx;: }3 z6 {9 y) B& Y6 K1 @* d" ]
assign axr1 = axr0;
: B! Q* W) v+ c1 E5 ]) ~: o1 ?2 r

, P7 j" ~9 p7 S( D$ f, r
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
3 o- c, \1 m, `( ], b" ^
static void McASPI2SConfigure(void)
1 h7 D+ _7 [3 q$ ]! F2 }% l5 ^{" h2 H0 E* t& u' _7 g) \
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 d1 N+ _3 A4 P6 e6 SMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- K5 Z* G9 p1 B7 Z# z' p! x
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; g# g0 E( |! S" N- m& ~) h
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. f2 m/ i- C9 U$ {McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 @7 m8 D- |% ^* ~MCASP_RX_MODE_DMA);- V2 M8 U; R  a. a7 G* T
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" `9 y( ?+ v! n5 yMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */9 K  a3 ]: [' B$ ?$ S: n
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 e' b" u0 Z7 CMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);; g1 u- |; Z% l. q; a9 d5 B2 E
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! N+ [7 y8 B5 o! p$ l5 ~MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 M0 \: k0 H* y: p) J3 t9 VMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
5 `7 ~+ g% |  K$ `" d$ D- \" H+ XMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
3 O0 i  H& s" f4 ], \McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
' k& F+ j' {8 A0x00, 0xFF);
/* configure the clock for transmitter */
- B* ]9 C( @: i$ Y1 w, R1 K  kMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" Y' d1 p. s+ j  C5 zMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 8 }- E' w. D. ?
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ i! F) y- D5 M: g0x00, 0xFF);
. V9 \! [- P# ^6 J* |4 j8 D: Q5 R, W3 I# w2 u
/* Enable synchronization of RX and TX sections */ 2 p  T2 r8 w4 [5 ?
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: Q8 s; P1 f. W2 p! qMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 m0 |3 C6 p6 l8 a$ M! o( \' E; o4 t( AMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*1 a, A; ^/ D& U* t
** Set the serializers, Currently only one serializer is set as+ A7 |" ]; B$ S3 `
** transmitter and one serializer as receiver.2 F$ f' h' ?; u$ ^9 R' p$ o
*/
' Y2 V6 R1 C% X2 Y% U, v2 bMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);8 S5 \5 s; M( e* x% F$ x
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 i* C9 p+ \" B/ d2 V3 c
** Configure the McASP pins
1 \5 X2 y' W! }% R** Input - Frame Sync, Clock and Serializer Rx( q" k# V# _3 }/ U8 s: ^3 U
** Output - Serializer Tx is connected to the input of the codec
1 E! v0 Q3 ~+ N; b/ I*/% N8 a4 j1 ^- o5 j  X0 |) ?8 z
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) ?/ z4 ~" b- v: k6 j6 t
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));( L5 b/ }2 \+ p( ^) g
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 P- k- Z+ M( `  u) c* \| MCASP_PIN_ACLKX  e% Y" u) |& Z; h) S) V
| MCASP_PIN_AHCLKX
/ V0 `0 r" {$ C( _- O2 R! p| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 z* _1 O- c8 C  m9 Z; C# b
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 ]; N2 t: y* l" U6 X# D| MCASP_TX_CLKFAIL ; j7 b5 z0 a+ @& u' Q/ \3 J
| MCASP_TX_SYNCERROR
+ z" |$ B% y7 h" w) _/ c* L4 t' b| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 c3 L3 e- s3 E" H1 `- ^& _| MCASP_RX_CLKFAIL; c# o! C  w+ g$ P
| MCASP_RX_SYNCERROR
, m1 U) q: a7 q| MCASP_RX_OVERRUN);
7 o! K* q3 x. }& `+ K+ D}
static void I2SDataTxRxActivate(void)3 R" m. i! _* m) O
{
) `9 @& ~3 d1 Q- T1 M7 e6 Q) G1 a/* Start the clocks */6 G) [$ L3 V% ^' F  h
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ h8 c% f7 H5 D1 x7 P# ?0 bMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 E: }/ f! `, f2 [& ~' A# L% IEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
/ H0 d; A5 N6 Z2 ?0 yEDMA3_TRIG_MODE_EVENT);# U5 z9 l' r% ]; p, u  X
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & B% J  s! Z1 n4 b5 @2 ~
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */- Q, j/ ^) p  k, B
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);' |0 N5 c5 M; X0 b  n
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 s+ S) R8 z" u6 d/ _
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* W/ z: f7 m) K. Y2 A! V8 wMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 i' ]) G# O$ k# g2 Q
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);* E' n& o+ N% l2 u) [6 [3 F
}

4 ~6 U- L' @# r2 Q5 t$ u- }4 Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 S( W% F4 `* S/ [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-27 19:25 , Processed in 0.038054 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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