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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11078|回复: 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,
' t' G2 o. \1 v1 k4 p0 dinput mcasp_ahclkx,* w( k* t$ O. @4 ~" I$ b: _( O6 t
input mcasp_aclkx,6 G  [$ D* k. d1 i
input axr0,
+ J0 l1 I6 u2 u; |, f7 s+ m
) o7 C: J' I2 g% Koutput mcasp_afsr,
5 j9 r3 p* f' W  r- ioutput mcasp_ahclkr,1 Z- o* F6 e0 z8 {/ L% P
output mcasp_aclkr,* e9 m/ w" W& K( Z6 U
output axr1,: K0 v; n2 s  [" m# a* g
assign mcasp_afsr = mcasp_afsx;
9 W$ ^% m; J# s6 C: g# a! lassign mcasp_aclkr = mcasp_aclkx;  W- m6 W% e2 Z* o' w5 n" J+ }( t
assign mcasp_ahclkr = mcasp_ahclkx;
1 D+ Q; U& c/ C% o% Y7 jassign axr1 = axr0;
, S: g+ o# W' Z% O
% p. t. R# [2 u: Q7 x  O" a
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# r- D6 C% K$ h3 V' ]
static void McASPI2SConfigure(void)  U% N# \3 N+ U; z2 b$ M& j* L
{/ s9 F* N, o* q3 ]/ h
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
9 Z/ }+ J# ^( A" q/ AMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
" k- a1 E8 E0 _3 nMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' z; J' x+ f* w8 D- b9 C# o
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 C& _; {. Y2 d+ z2 Y" M( ?  R) T
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' n3 p2 f/ w1 [: w- e; iMCASP_RX_MODE_DMA);
& H1 J# y  {2 T, e7 uMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% R5 ]0 a% m3 Y
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 t4 m- @3 O7 s* y: L
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! m; `' n4 L& n9 R$ A; AMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
+ z  r) z/ t) x9 v& k2 JMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
6 E  m3 N6 g# A4 s6 q3 }$ s1 MMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */) t0 w- k0 a* }: f( l! e
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 z0 u& O6 k6 }: y
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 h* q2 T0 ~- \. s& s7 u8 }4 c# ?
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& R# A3 L2 n5 l0 S- K* m" d0 Z0x00, 0xFF);
/* configure the clock for transmitter */, g- h' w' A  H" ^3 m
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% Q! S* e  q' M5 v, G+ H7 k0 xMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
/ f. J6 q4 c. k. \McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
+ |; j0 Y/ ?' f5 }6 ?" X: i0x00, 0xFF);
  O2 m; `$ I5 M
# X8 Q' t- N6 l) U9 Y  }8 x" S: g/ y/* Enable synchronization of RX and TX sections */ 7 i! ~. o$ }7 W* R9 ^
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */. x2 ]6 k, T  N. A
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' k9 U1 U$ w) p! Q) G; iMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! S9 s- r$ H7 Y1 K7 e" U** Set the serializers, Currently only one serializer is set as
/ f$ k9 I* n- A/ {** transmitter and one serializer as receiver.! C' I  _# X" u, Q
*/
8 v- u: e- {, V! {( k/ hMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);  U4 u( j& E: N, k: F5 c1 N* j6 j# F
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*. f$ ~3 N" ?1 p  j) c0 ~0 n
** Configure the McASP pins
0 T  B6 b5 V; b. D9 v** Input - Frame Sync, Clock and Serializer Rx0 b+ K: L/ Z9 J3 }* L/ j
** Output - Serializer Tx is connected to the input of the codec . e4 n: p) P4 _0 m% F% J7 V
*/
& \( p" L0 O; wMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 d. C1 H2 ?' ~" Z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));; p0 Y: A& W! i6 s1 a3 |/ [
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 z" [: _- Y$ s+ O) `. q- Z
| MCASP_PIN_ACLKX! b$ i# e1 c3 _2 h! k$ g6 I
| MCASP_PIN_AHCLKX) {/ Q7 W! g! F2 W  q
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* {" @; M7 ?2 H- n9 x
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & X) ]; r' W, n: e* E
| MCASP_TX_CLKFAIL ; _/ @- o$ ~9 \) I8 l, n% q
| MCASP_TX_SYNCERROR
+ q  U5 u$ }1 x' Y2 _| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 {8 A& @/ i  c3 x| MCASP_RX_CLKFAIL& t1 z+ q- I, s( g3 R$ p
| MCASP_RX_SYNCERROR ( C2 H0 m+ U0 E$ ^
| MCASP_RX_OVERRUN);0 F! e' ]3 b; @
}
static void I2SDataTxRxActivate(void)
3 B/ k0 v! l) Z0 _' Q+ `9 E{
; e4 ?/ K. Q3 V/* Start the clocks */
( P; ~+ v  a' ?- i: _9 A8 v" BMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- V3 M9 Z0 y, e3 [$ g( \: h% `0 q
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
) v+ L3 w% B% a7 JEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 E. X1 d$ w- B: {6 o$ r, f8 ]
EDMA3_TRIG_MODE_EVENT);
" \* C# b6 }( N) |4 a; y# Y. A+ xEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * y7 d* W( H  n
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! p6 B0 d7 _1 H. E/ ^* E) {( F6 {
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 s9 G- B* \; |/ [$ p, a
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 S3 T  `' Q9 \( I: J
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% J/ R* i8 Z. [# J: ~" q4 D" [McASPRxEnable(SOC_MCASP_0_CTRL_REGS);0 q' \9 O- q2 U
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; b5 K( z# u! g5 v" k- }
}
9 X, B; q0 w+ [$ s8 h
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# k2 x9 ~; H% R- t, k! x% C1 w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-23 22:50 , Processed in 0.038830 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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