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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11071|回复: 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,9 k8 f) F, ]6 p5 \9 M
input mcasp_ahclkx," \4 U& d+ h8 Z6 ?
input mcasp_aclkx,7 l" U8 a8 {/ K1 t8 I
input axr0,8 Y/ F2 W' T& ^/ \. @8 v
( Z$ {5 O" V$ H% M8 |
output mcasp_afsr,
* F. c) r5 o$ [& Z4 X0 C: Zoutput mcasp_ahclkr,8 k' B* H% F+ p4 n4 F
output mcasp_aclkr,
1 @; Y. U# c( T, Youtput axr1,, \2 n0 g  Z, k* W, l; s# k
assign mcasp_afsr = mcasp_afsx;9 m) W* ~' p6 `, U) I# d' R$ s8 |, v
assign mcasp_aclkr = mcasp_aclkx;
8 ^6 p, L, m/ c, Lassign mcasp_ahclkr = mcasp_ahclkx;
* D2 ~# ^; X1 L: W. xassign axr1 = axr0;
; U% j7 s$ U9 p7 c1 R* J
/ e! V& Y; K3 _+ D1 ]% v  m' D
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 |3 o: y: f0 j# ]2 ?
static void McASPI2SConfigure(void)
  J" M4 n' q6 f  Y$ Y# E0 x3 |{
0 x" X9 q# l  [. C# vMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
( m# z1 |+ k- `$ aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& K9 f; \  W- U5 R4 d2 Q/ yMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 E* U2 T, T# O3 IMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 U) L2 O, V6 B
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 e1 |) s" D& }
MCASP_RX_MODE_DMA);
+ }& `! V9 S" S! f/ VMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: m8 f' H' o3 j6 jMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; R7 n) l4 w& A4 O0 T$ d0 N  m: T( iMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
* s4 Q; m+ z, h  u, DMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 I/ E& l% l  z$ B* qMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# j& B) G& d! m5 u$ D: mMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */8 o% p# G: G+ [
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ p7 Z% ^0 L# C2 T8 z
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( Q# ~. q" s8 KMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
1 a5 z! {; Y2 N& |0x00, 0xFF);
/* configure the clock for transmitter *// x6 w+ Z( J# Y/ R" w5 Z5 L
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
) ]1 k7 L  G& Y4 |. c8 T6 r" SMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - P5 {( b; g3 Z& `
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, D) ^" j$ t5 z! d9 Q3 N( o* ^' a; W
0x00, 0xFF);
# B& s% A, m/ @6 Y1 i. Q3 u  X2 @2 \2 v! Y6 V/ s2 D( b
/* Enable synchronization of RX and TX sections */
  E) z# N5 s8 IMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& i+ W/ D5 r6 V. Y* _' U( ?: tMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 `# A" z3 }: ?5 u
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
, `1 L( S, E8 v! d5 a** Set the serializers, Currently only one serializer is set as2 S# z; S" L) F, c$ ~2 {
** transmitter and one serializer as receiver.+ M+ M4 N9 J( w" S
*/
) o5 T, @8 p# j6 d; F% eMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
- J' H% z/ @+ s3 l; q2 v% c+ lMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*9 I, x) K  f$ P- ^" ]( Z
** Configure the McASP pins % _$ D; G% a5 [6 a0 w. D# h
** Input - Frame Sync, Clock and Serializer Rx, }% m+ n4 j7 s( M3 k3 v% \
** Output - Serializer Tx is connected to the input of the codec
1 f  ], _# l4 e0 i2 v" j" v+ s*/
+ V; `6 l' G2 F5 `, mMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 }6 O" N& Q  Z& sMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 a9 ^  W! E* I0 OMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX; G, L% t. X1 `; A) g' d, S
| MCASP_PIN_ACLKX
7 G3 b* C; J5 Z5 u7 T( L4 g; A| MCASP_PIN_AHCLKX
2 h5 r8 v$ E5 ]9 L9 ]! O| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
5 r' M' p: ^6 H5 L/ B# f  TMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! R! F" t( ]# `3 X
| MCASP_TX_CLKFAIL
# u$ T0 p9 Q/ ?( H| MCASP_TX_SYNCERROR  k1 y( L4 p/ ~7 }  {) p1 N
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . ]7 j2 Q" M: [. ^& j9 t
| MCASP_RX_CLKFAIL
* H4 S9 ~" F& z+ p2 p% P' E| MCASP_RX_SYNCERROR
4 U5 q- K. D! B( }| MCASP_RX_OVERRUN);
3 m& _/ ^2 `$ A* {3 C$ k2 y}
static void I2SDataTxRxActivate(void)
  u# w$ z' Z/ S+ J8 a: T{1 J( x6 e- Z1 `2 ?5 R% c
/* Start the clocks */
8 w. K  }  U. A& a# qMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 D& P; M1 m7 m" k. ^McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& k% Y  X7 `$ }' ]! K- t1 k9 z& bEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,1 h' k0 ]8 K( j( q2 O3 E! N
EDMA3_TRIG_MODE_EVENT);
% T- y$ D3 s; r  cEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 0 f+ `0 P( v: [0 _3 w6 e* |1 Z
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ O+ e! W  q$ F1 t
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 ^$ `( q& g2 k9 C* QMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
; V0 c/ V$ z) nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */) C# D& g) [+ {; t
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
5 O$ G3 e; J7 ]2 A, X$ VMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);" v0 n% p0 B6 Q! a2 \3 M
}
* m2 Z& q4 q4 m) r# u" Y* v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ T' W( l5 h8 K6 Q+ }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-23 18:12 , Processed in 0.040460 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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