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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13318|回复: 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,
  W1 j. T$ o0 X' H3 P1 j7 m  dinput mcasp_ahclkx,
9 z3 ^! n3 X; X' L2 U( y) }, {input mcasp_aclkx,0 m( v& y6 a) ?7 F
input axr0,+ @+ c  N' A7 C$ ~( w) v
& ~  D1 V! F2 K5 M
output mcasp_afsr,
  V, A. ?1 {- L; U0 Moutput mcasp_ahclkr," H, Y" v6 @" }' q  p* S. u: C
output mcasp_aclkr,
2 \' D5 e" V$ Z* ooutput axr1,5 ~% X3 `, _+ A5 w/ k$ K' d
assign mcasp_afsr = mcasp_afsx;5 U. j7 a7 s) X9 z
assign mcasp_aclkr = mcasp_aclkx;4 c6 d. J3 R& H$ @" J/ {  ^: p
assign mcasp_ahclkr = mcasp_ahclkx;
+ o8 J! Z7 J" h% m1 lassign axr1 = axr0;

& f# T- U( f) o/ T7 m
* R& t( l+ x2 I
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

' d8 v+ l" r; T; e8 l
static void McASPI2SConfigure(void)  Y7 T5 }+ `, U* M$ N
{
  T5 t+ H. m. P  s( `  Y, r5 S6 ZMcASPRxReset(SOC_MCASP_0_CTRL_REGS);$ Q- \2 G7 Q% J( r) c
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */6 V7 X7 b9 E9 p7 H% T7 n
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);% T5 ?4 `: U& w6 C- {
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */$ G8 k7 X- `- ~, J
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! ~. h( n' H' w4 E
MCASP_RX_MODE_DMA);
( z$ ^2 k, R, I2 ~% DMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 u. W) `4 w5 U0 a) P" m
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
' k, C" _! l9 vMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
6 U7 t0 H$ o1 a$ D4 E0 k; ^! FMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
5 x1 `8 \8 U) ~7 ~5 y) v, ^  iMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
8 I( ~7 E3 S/ Y' m( s8 d  c9 k: TMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */7 Z* t* e* E" }3 G( j
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: ]* |5 m) a$ q2 `6 H# cMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * |. ?8 R' ?( C) c; Q  \
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,7 L! G: l% K( G' m! y' C" l
0x00, 0xFF);
/* configure the clock for transmitter */
* l) C* W; G  w+ PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 z7 o0 v- u9 t; A1 L! \McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);   T# x; v& r" b9 h' M% g
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,& K7 |5 Y5 C' w8 C) y
0x00, 0xFF);
6 @" U2 w+ {" H$ {
  Z! U" O& {3 u" C* P/* Enable synchronization of RX and TX sections */ ' i. ^3 o9 j% [6 P
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */6 X2 A& ], T  \, w) b! n. g8 g6 R
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
+ D  c  A, B- S6 e1 b& r6 N8 gMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 e+ q% X' {# @" O- e, q
** Set the serializers, Currently only one serializer is set as+ ^% x# @( e4 h4 \) m& l" i
** transmitter and one serializer as receiver.
) C/ A+ S& N1 ]& f% D3 D) ?*/
/ m/ Q: {- v+ |; W% h" d( ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( M$ l- i# [' b8 J+ g; t
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*- c9 i+ {2 p0 t
** Configure the McASP pins
$ @- v! N# }9 j! X4 g% C% G' m1 \$ i5 ?** Input - Frame Sync, Clock and Serializer Rx
/ }, [1 G/ a( D$ l7 n** Output - Serializer Tx is connected to the input of the codec
/ a- Q  {* y: q3 C! }# A' b& ]*/
( [* O5 \6 d" k/ PMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ b  I$ X% R9 K& VMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
# y( n* ~; ]* j# O6 t! UMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 Z3 Z, [, M) Z
| MCASP_PIN_ACLKX: h! e% x0 s' t4 E. t
| MCASP_PIN_AHCLKX& ^4 H$ D. B( p; E: Q
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
! B0 i5 ]8 I$ y& M- TMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
4 `: T# {; \: C0 b2 I" i| MCASP_TX_CLKFAIL
# p6 l* N8 S( @; e) U" U| MCASP_TX_SYNCERROR
9 T/ c& L9 `; v# h  N4 \" }% k| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 g- w5 [* S$ H3 R' d| MCASP_RX_CLKFAIL6 J8 n$ n9 W) g: X) J
| MCASP_RX_SYNCERROR / B% r0 N5 I  o4 _& {+ {" [
| MCASP_RX_OVERRUN);
) m0 D; l0 V1 U" M}
static void I2SDataTxRxActivate(void)3 R7 c: `& |4 s
{0 B& G! F5 W4 u: t
/* Start the clocks */
2 C6 G$ ?9 Z$ K4 W4 \1 pMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
: R" Y1 T6 E2 j% x% O6 tMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */- c$ L) V  Q9 B3 T- r5 I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. u2 U$ r, m; I4 }) w
EDMA3_TRIG_MODE_EVENT);& v4 C& H" g, F( _$ @! t5 t! A; w9 T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - E. L/ c. D- z6 f/ w
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
1 T$ {1 i. V$ C1 s" X. dMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
9 d3 D' e, @, ~3 }1 ]McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */0 O# H0 x+ C' l1 x
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */& Z8 O; {7 Q( |$ {1 s4 S4 f6 f( u
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);& D5 Z3 x1 }5 A$ j  s
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);+ i' H5 k' a5 W0 d8 @6 t: j
}

% B: T9 h" F9 Q% F
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) x/ v/ h* t9 F- H4 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-30 19:14 , Processed in 0.039375 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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