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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12526|回复: 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,( ^( ?% @. s6 a/ @* u
input mcasp_ahclkx,
' D, ^+ y9 s9 j" \8 zinput mcasp_aclkx,
0 `7 D, K- B4 Q, o/ C  Y: H# Oinput axr0,; w. \+ k% A% k  g' }. g

* X2 E; m+ U6 W, Q! E; }# u" m9 R) ]output mcasp_afsr,
3 R4 o7 y, N8 N( uoutput mcasp_ahclkr,
. K" q  ^6 {& B8 Soutput mcasp_aclkr,# R7 z4 ^- r: p' s% ~" l
output axr1,
+ G( T- S- F3 g" l) `0 x
assign mcasp_afsr = mcasp_afsx;# F$ |4 Z+ _9 Q. v! E$ d. Z! g" z
assign mcasp_aclkr = mcasp_aclkx;# I% k: r( S* U% X& A2 Z* t, f
assign mcasp_ahclkr = mcasp_ahclkx;9 A) n9 T9 G& y3 r1 _0 J' m/ h5 X
assign axr1 = axr0;

- I5 D, b8 G: M5 C3 _6 z# q5 G2 l- M$ h0 U! c2 T& v7 x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
* S6 {/ p4 b2 v4 c5 }( ]0 i. `
static void McASPI2SConfigure(void)" O1 @4 |; L9 l; Y) E' D
{
5 L& _& f# |9 m$ g+ ~4 e" S2 BMcASPRxReset(SOC_MCASP_0_CTRL_REGS);: E. A2 U; y: m% F" u
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 y# \* n& |; T
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  K4 j& F* {2 s. Y/ o7 g) r% fMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
5 A: T, K' r( {+ H, e0 FMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( W( o3 H6 E& pMCASP_RX_MODE_DMA);
, Y4 R% [  E- O2 V, x1 iMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ ]& X" ]# g: [0 h% m7 f- C
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */0 t( V+ Y: @5 U- H4 H* Y" h
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, + \0 i7 E% S* G) E- H
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! Z5 X, P+ x% k/ b1 JMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ( q0 z1 j- ?1 A4 M8 b( L* |, ]
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
6 c/ ]7 z% h% B* a* xMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
2 o# K" [3 u4 _1 T4 ]McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ c/ |, Y6 v' `1 _/ ]$ X* c# iMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,6 N" M- L) r& b7 v+ E/ K$ L
0x00, 0xFF);
/* configure the clock for transmitter */
! @* D. Y9 j8 F$ aMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. J; ~, k6 O3 A% c' o, {McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
2 ^! C$ T7 _" rMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,6 g$ t2 o+ R$ ?1 `& T
0x00, 0xFF);
4 A+ l) d0 o7 H8 G% x0 B5 \" [# y+ X/ F9 }, ^! Y
/* Enable synchronization of RX and TX sections */ 7 n  G5 _4 p2 p; t9 y, @
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */  E. m8 i0 H3 y& W. s
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);; F' ?2 N: ^* p/ D/ n+ u
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) B* h9 l; ^2 L( C5 [
** Set the serializers, Currently only one serializer is set as0 E% Z( H7 P( d6 Y8 l
** transmitter and one serializer as receiver.
$ b+ {2 ]* {$ Q7 M1 P9 V*/
* P) }3 |& V8 B; ~/ WMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 C! h, g8 {5 l% `& y, l
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  K3 Y  _  M6 f0 q
** Configure the McASP pins 0 t4 j) i1 g! Q( {! M  D
** Input - Frame Sync, Clock and Serializer Rx
0 Z5 W  S: J' M$ W** Output - Serializer Tx is connected to the input of the codec
1 G: \4 f9 j4 V*/7 y2 _( B3 @8 j  Y
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 H/ h- \% C/ O5 Q1 p8 d* k* g
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. Z# f( `# M8 w+ |" f
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 I2 g$ p' L7 H2 L6 X, N
| MCASP_PIN_ACLKX+ A( R. k. P1 S" ?
| MCASP_PIN_AHCLKX; f2 L5 ^- E1 m) R) W9 v
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  p2 t2 F$ x& P' sMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
( K$ y2 S/ F% G2 z! ~/ Z, m- \| MCASP_TX_CLKFAIL ; ^* j  E8 d5 G, y+ A. [
| MCASP_TX_SYNCERROR
; a; W9 Z4 L2 X: |  y: ?| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
% a( Q6 l5 R1 ~; _# z7 W; ]* k8 K# r" t| MCASP_RX_CLKFAIL8 J  ]6 X3 x3 Q- N7 e
| MCASP_RX_SYNCERROR
4 C! c2 @' p0 ~' c| MCASP_RX_OVERRUN);
3 P+ y5 o7 K3 c$ m0 t9 P1 |% k  `* Y}
static void I2SDataTxRxActivate(void)7 G$ f! B9 [% d0 u1 [% {! t
{
/ t- y. h* V) V" z/* Start the clocks */
/ ]& I  T: R! D4 j' q9 j& a0 c( o; VMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% F" [1 b/ d- D* S: M' Q3 n
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; v  d4 O/ X; [" _; C2 eEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
5 T% I) W7 A  C9 {3 k. ^EDMA3_TRIG_MODE_EVENT);# Y  x4 |8 }) p3 F' t
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 1 M  q- g6 h  _3 U* N# N
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */8 O4 M+ h1 E$ \- u2 ~" e8 y% D
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 ^/ {" [5 m8 r* F
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
1 O7 E9 a/ |1 e( _2 f. |while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
9 E2 }# Y3 `/ `4 {, d2 YMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" I0 y$ R) g7 ^2 K. R: vMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
) m0 L5 u( a1 ~- [* M7 T}

- R4 y) I) _6 s- P% l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 L: r0 w3 [- F: i' m; J& W6 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-1 11:10 , Processed in 0.043417 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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