MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,! v  o# X. a/ k0 K2 c6 p# F. m
input mcasp_ahclkx,' T& v3 U4 e) y. m, C6 E
input mcasp_aclkx,7 i& q! B4 ?  e: }2 {6 J1 [- |! S
input axr0,
0 m2 c0 m, ~- i; u
9 T3 u% K% z9 L( g1 Y6 noutput mcasp_afsr,( w5 T4 [( q, I; h1 ?7 N5 x, v
output mcasp_ahclkr,2 x( V2 Z/ @0 E9 x6 D, w7 `
output mcasp_aclkr,
3 z, M1 e" S+ T" P4 V. koutput axr1,* w* ^5 x- ^) a; K# B8 Y
assign mcasp_afsr = mcasp_afsx;
& a8 M8 N2 ~& J! oassign mcasp_aclkr = mcasp_aclkx;4 l, `) F! n1 z6 g1 w9 ?
assign mcasp_ahclkr = mcasp_ahclkx;
( y! r1 m( {% u  |0 Lassign axr1 = axr0;

% g/ n; l8 _' p  u  d, n
; C6 s$ S3 z4 W# _' F* D
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, E- `# g/ p5 R3 g0 T
static void McASPI2SConfigure(void)
- C0 T) G& n  Q6 [7 m{
0 N* e+ O3 `3 z6 n8 U  KMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 j% O7 U# p5 v3 y% {& a- S5 x
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
! n( s8 K1 K. N2 ^, _McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);7 P" M% [# M5 t3 F* v3 X
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
4 R& @2 ]# x) e: |2 l  D8 EMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 C3 `' P5 R/ g5 Q, vMCASP_RX_MODE_DMA);/ W( m- q0 W' N" D: @
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 d1 d5 H! C: P
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 Y+ X9 V. N  p' mMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
9 \2 G8 O7 h4 [) Q2 uMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) \( {$ Z1 @2 j; B( t* P
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 9 N( m; H& ?9 A5 M! m
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
5 f- j9 I/ ~$ XMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);" S$ h! j& `( L( Q0 i  D
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
  y9 E$ k5 s1 T2 f: X# T. H( `4 rMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ z* {- C! l5 e3 v+ K0x00, 0xFF);
/* configure the clock for transmitter */$ y6 Y4 w& D" M( l; b- C
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
8 X  P  M& K6 _0 l* m! x4 zMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 A3 N# z% ?9 b4 c( C) T" S3 I# wMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
: h* C7 S1 V' O1 X# s+ r0x00, 0xFF);
& d; A1 t6 ]5 p& K6 }& L0 D, v: g7 w
/* Enable synchronization of RX and TX sections */
. x1 a) r* s$ A* P! G1 ?) iMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; i7 V: {# k# v+ H" W+ y; S
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
" |) x7 u0 v: ?- j" E% |% SMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
, [2 M% O1 {* S' w1 t$ _** Set the serializers, Currently only one serializer is set as
3 ~7 ~3 `% l2 U- H7 J# q" S** transmitter and one serializer as receiver.
% f6 ?% C! O8 Y" l2 h! M( D& N*/
( J0 z# G: `4 w0 R8 c0 yMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
6 v2 x! G: x4 j4 w0 oMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*" O6 E. b8 A: x' o  W
** Configure the McASP pins   p: {2 `! L) C7 S1 c
** Input - Frame Sync, Clock and Serializer Rx
$ j. z7 [) j5 J* I** Output - Serializer Tx is connected to the input of the codec / P" C) Y* `: l7 l! |- o( M
*// d: Q3 \. K4 {& z( u! s/ n
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
/ k0 ?* W3 s$ i* D( J3 kMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 E3 l. Q& X; N2 f# M
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
: V( _% G; N2 @; S: ]4 U3 k" K| MCASP_PIN_ACLKX
0 |* q3 w2 f4 D! E4 K- R| MCASP_PIN_AHCLKX: |0 d# K  A/ o5 l1 T
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ r; z7 u, j- d2 z& o: G( c
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
8 |0 Q+ T) z5 T. R4 e! ]( u; e| MCASP_TX_CLKFAIL
( y8 b( z/ X! Z7 t| MCASP_TX_SYNCERROR
+ _9 I( d! _4 @/ N* g" o0 _+ ]| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
6 I; W+ A/ S4 D- Q) D+ v& H2 V| MCASP_RX_CLKFAIL! V' J% W/ o( F7 k) F# M
| MCASP_RX_SYNCERROR 7 {- I' o: M, ?& W$ a8 _7 R8 Y
| MCASP_RX_OVERRUN);
+ J! B# _% @& }* s}
static void I2SDataTxRxActivate(void)0 `3 q# H9 Y: x6 v: ?9 y9 U+ t" d
{
( C( J3 t" [2 f( m6 \5 \/* Start the clocks */
* r5 C( |3 @4 K) _0 m. i" ?9 oMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 b. Y# ]7 e! K3 AMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
0 b4 W2 y% v4 \EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
. X. W# d* o: `/ s4 @) x) U! O4 EEDMA3_TRIG_MODE_EVENT);8 S, x0 E4 y6 z- |
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 M0 Z- H9 Q5 p/ j$ {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ Q6 w* [2 V2 o- ~, N& d. D- @McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 X8 Q3 L1 g, z6 gMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ d/ B3 M0 O9 }- ]while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ p# b  X/ E# [. N$ Q
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);, a8 K# c. j7 }' R: `
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 i4 c1 u, u! o4 Q}
( f) T: G4 h' M* H2 z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' t/ T- S# D# w& i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-21 19:13 , Processed in 0.040151 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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