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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,, a: @$ {3 I8 O0 T- b5 B
input mcasp_ahclkx,
) {, H. @& Q$ l" ?input mcasp_aclkx,
% \6 }5 I3 L0 U& uinput axr0,
( o! B) \: a5 n" s
8 G. X8 S' ]% D0 C  J4 j; n; Eoutput mcasp_afsr,+ _: `; h( |  n7 t" I  [5 g
output mcasp_ahclkr,
4 r7 S+ t' n/ H4 ~9 N8 @output mcasp_aclkr,
  }# k& ]( f+ [4 @output axr1,$ A! J" r: F- h5 p8 Q  c& N
assign mcasp_afsr = mcasp_afsx;
" C% E6 L, b; j3 aassign mcasp_aclkr = mcasp_aclkx;4 y( |9 b8 j# c+ ^
assign mcasp_ahclkr = mcasp_ahclkx;6 i' M6 J: ^/ [% M
assign axr1 = axr0;

! z9 x+ T' ~0 j) g
( `% O' l+ _) A+ @0 {
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
& g( x+ |* p' E3 q, Q' ~
static void McASPI2SConfigure(void)
* ^( P* B! i) a" |' f" ~( c{
5 ^: O% F- m9 @; v; f$ |4 mMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 X. K" ~5 N/ ^" J' ?! R4 ]; L( vMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 A0 z/ X* h/ r9 X; L5 t- }
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. q- T& l: l+ f! Q% w
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- C0 K& Y6 E/ V8 ]- z! EMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  f; s& W' K/ j# A
MCASP_RX_MODE_DMA);
8 X0 W+ B$ k" Q" H& |McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- E( C% P: l2 x4 v
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
2 _) a' K* P/ x8 `* F7 `, g; WMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 J# r  A/ H- B3 F
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);1 K( ]  ^( X4 q# d6 H/ e
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! \$ x7 y  `$ R! U! d8 |MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
5 B  q( T8 M. T% l/ V/ {$ ?McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
2 j, Y5 Q; r8 W! xMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
$ K7 ]2 B5 ]8 j3 D5 \% j6 pMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,8 ^' b* L9 ]7 P( T/ c& I+ O- c
0x00, 0xFF);
/* configure the clock for transmitter */
0 w2 s' ^1 ^+ j2 M* h$ G! ^; e% KMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# [; u* C8 Z: t3 ^! E* MMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) i0 Z9 O1 r1 r% a% WMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 `& n& e6 l- e/ }2 d$ G% M+ |" b
0x00, 0xFF);
0 F9 w& Y1 Z+ ~$ C9 \* |- z# ]3 B0 d3 `6 A1 n$ N$ {$ s
/* Enable synchronization of RX and TX sections */
( [; }5 t) Z$ H) W7 c  pMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, U6 Y7 ?7 }: F
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% ^) Z2 U( U' JMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
& q5 a: K2 p& C2 W* }* t- {, U** Set the serializers, Currently only one serializer is set as
. R% J" j2 d4 H" P( D+ d+ Z** transmitter and one serializer as receiver.( d* v$ Y9 v5 b1 T0 T; l
*/
! ?* ?; f0 C) X1 n; bMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);- {( p" G+ H1 ]* K- I) Y2 O- L
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*6 ^4 M) [& |' z% r
** Configure the McASP pins
8 l$ H, v) ?8 i3 V  I5 W/ p** Input - Frame Sync, Clock and Serializer Rx* L% M( E5 I+ o. T* F
** Output - Serializer Tx is connected to the input of the codec
6 c$ G3 {. i' S*/& E1 j# {. h3 t  }: E
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
* X3 O+ w  z) I- F0 AMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));* O: ?2 ?$ Q# q- v1 S
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" @+ Y8 U! F* M& ^1 P1 U7 C' m* W
| MCASP_PIN_ACLKX( t1 T* W) G$ l% ~
| MCASP_PIN_AHCLKX
- Q+ m4 r/ E, ^9 W+ ^1 `| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
# ?6 T# h6 ^! @% H% eMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 k7 {% a1 j2 [| MCASP_TX_CLKFAIL 2 h# K  r' |- Q2 J; E
| MCASP_TX_SYNCERROR
2 d. z7 L9 M+ M  Q3 P| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
4 H: h$ q& I5 U| MCASP_RX_CLKFAIL0 [. N7 h  a  _
| MCASP_RX_SYNCERROR
5 \! F: J! {- Z" d| MCASP_RX_OVERRUN);+ a7 Z0 |# g2 l( r1 h; _
}
static void I2SDataTxRxActivate(void)  L' ^* h0 m3 k  U
{
/ Q) v" {1 S6 `& D- s/* Start the clocks */
  e) {2 j; U) D' p6 F6 dMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% N. a. p) i5 l: i9 t" j
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 g7 K3 l* O& I- |4 FEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,6 V, |; F4 T: @6 q6 }. G7 Z
EDMA3_TRIG_MODE_EVENT);! s; _$ _& E8 }0 i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# ]+ N  D! P: t" bEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( K( S  E6 v! a' bMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- ]( D8 _2 }/ E
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */  B$ o& G9 H; V. c4 Q2 m: d
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
  ?% r5 z6 _) s, N8 A; fMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);6 I2 z4 O& e& O, x" W
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
- u5 \! k2 K8 \" i2 Z' B$ i0 p}

5 P' [+ A9 h* M. C# Z, `
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' L2 o) P& G% n" F9 e" ?9 G" P) r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-9 21:21 , Processed in 0.040423 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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