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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13245|回复: 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,
( `$ o/ i9 t9 |1 kinput mcasp_ahclkx,# y/ U5 e  D2 Q3 U' f; ^$ `
input mcasp_aclkx,8 l. R0 Y8 z2 P% C( ^) V
input axr0,6 W" u& v1 [  `' i$ |3 b3 k

2 d; r5 k2 F: K$ k9 Joutput mcasp_afsr,
/ D: n1 K7 Y8 [8 p" joutput mcasp_ahclkr,
5 p) x/ ~: Z7 i0 d% C" `output mcasp_aclkr,. s+ N& @; X  m9 O0 F; ~
output axr1,( y/ L0 R/ X' M; b
assign mcasp_afsr = mcasp_afsx;- A: X8 ^( D+ `- ]/ v2 e  Q
assign mcasp_aclkr = mcasp_aclkx;
3 D% v& D* r" M, j* ^2 Vassign mcasp_ahclkr = mcasp_ahclkx;
1 ]0 D9 n& ]4 S" ?' D8 w; q( ?7 uassign axr1 = axr0;

7 e$ D2 D1 a' I7 f1 `. r9 O) W
, ~* T8 {- K% x9 I
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; R* P: N2 F9 U- G  r) c' l
static void McASPI2SConfigure(void)" j) l) @: m- f  Y: M# Y- P
{
- s; I! ^3 B$ J  UMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 Q( l" G' [9 R7 x& u0 kMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */& l1 B8 b& k  C) T
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  k$ C  e$ F  J* \8 LMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 Y- z) p! V) q9 l( }
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) t* H' r. y2 m1 ~MCASP_RX_MODE_DMA);; h' ^) ^5 W! e' Q; N5 F
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; [' X- k. w6 f. p. [
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */4 i1 X7 T" {- I. ?
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 Z' I$ ]7 q( @. n2 N; u) {! P
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 j  y' O) ]/ H$ _% {5 O) F3 bMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, % y' E0 y* v) h, p2 o
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 H- B$ ?' t) w- a* M( d2 |
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 D( b4 S; m" M9 y! a! m
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# A0 t( p9 Y: k6 R; N5 ]) wMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, B6 x3 q4 U/ v/ b7 u
0x00, 0xFF);
/* configure the clock for transmitter */
5 @  R0 \' M4 I6 oMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 w# T: W, q2 M& l" [
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
- c& ?# `9 Q" ^2 m3 |3 gMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
8 ^& Q1 ^/ N- Z6 K3 g( f' d( }# p0x00, 0xFF);
: _) j2 y5 c/ q4 v; C* @+ A* ]! X2 H
/* Enable synchronization of RX and TX sections */
3 W0 I# g* g! r; V" k0 q# z5 OMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 [; w. |" R/ E! ~, c
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 ^4 _6 d$ }, Z9 Y) }9 ?McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
/ C4 `) C+ ~9 s** Set the serializers, Currently only one serializer is set as% A# _& @: N4 M6 A. M% U7 m
** transmitter and one serializer as receiver., ~% d) y6 U. V5 [/ u6 p( G) ~
*/
! k  {5 J( z5 l) \5 Z2 F$ g4 A- i" p: ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
1 w# b% [+ E# pMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
- k* y: G4 `( f3 Y( n3 L3 a** Configure the McASP pins 0 a+ S1 L3 Y5 i; W' |
** Input - Frame Sync, Clock and Serializer Rx# `+ v, C1 }; \( ?. F& X$ }
** Output - Serializer Tx is connected to the input of the codec ) j  y/ x1 b* X9 @! U0 ?/ c( G
*/0 }! ?# `% M# M9 N3 W& a* L
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 e/ R+ G% ]! i  @( l
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ i- [0 a4 N5 Q% uMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) }1 L$ E/ n5 x  t| MCASP_PIN_ACLKX. Q5 E1 r; c# M8 d
| MCASP_PIN_AHCLKX  z, [1 t8 i, V
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ F1 k2 @$ r: Q3 \% i' |+ k3 p
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 s7 G' _) U' C- z; Z2 w( `| MCASP_TX_CLKFAIL $ G/ v1 y# q/ I1 q- H8 d0 c9 N& X
| MCASP_TX_SYNCERROR
7 W' g6 l5 s0 c| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 j" ~4 W( }( e| MCASP_RX_CLKFAIL
# e  d$ ~$ f& t6 h8 F! q| MCASP_RX_SYNCERROR
0 A* h: N- r' ?6 }' _4 Z| MCASP_RX_OVERRUN);
( E# C7 f! r1 K( c}
static void I2SDataTxRxActivate(void)
1 g& I4 Z' `3 d2 E{
  k& r, k, `6 H$ y0 B, r0 k/* Start the clocks */* A7 q6 u% v' O7 n) n" i; U
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);2 l7 R3 ]9 P. U+ t
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: ^$ e% H" ]/ S( p/ z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# }2 o# B% _  \' b$ X7 a6 R+ hEDMA3_TRIG_MODE_EVENT);: j6 K+ T; K  x+ |4 \
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, $ B, D; u/ M5 @) r1 o: e
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, T+ I1 Y6 t0 U" ?  l# y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 \7 ?9 n9 e- V* L
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% |8 a+ c  R3 C9 g+ m: b5 a6 ?9 I' I
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( Y8 h- ]2 Y' [  R; R
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ t. d/ r/ N/ `2 w" j" F" ]
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
; h% g% s0 o+ L}

2 B+ t; d/ {  H0 V) N% h+ ~
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
! Z4 n8 ~2 A" Z0 I; Q6 ^# u/ @( o5 q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-19 05:17 , Processed in 0.052418 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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