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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,9 }1 V# _! ]: g
input mcasp_ahclkx,/ O4 y: T# z$ n
input mcasp_aclkx,2 L8 A/ p, H6 A7 c$ y, [
input axr0,* |: Y; q% X+ ^6 H. R9 k
1 o* |5 r5 l6 r$ Y6 X" \
output mcasp_afsr,0 D/ G1 j! b3 j8 y% F! ~7 E8 K
output mcasp_ahclkr,* ^, B' A2 @/ Z+ o4 `/ O
output mcasp_aclkr,2 a8 N4 e/ o$ K+ P" n
output axr1,0 `) E1 ^! [: J( @$ D1 s! g. e
assign mcasp_afsr = mcasp_afsx;9 E- O5 t  q" t
assign mcasp_aclkr = mcasp_aclkx;
. i" H. k& ?0 W0 wassign mcasp_ahclkr = mcasp_ahclkx;8 I9 p  c6 y; C* ^
assign axr1 = axr0;
% i8 {* \) k/ `& Q. T
- z. k! B; w- m( k
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
, T) j+ @7 x( Z( h+ Q; I+ s
static void McASPI2SConfigure(void)/ f, S- a% r+ J) Y0 {- C
{  D, u: o; p7 I6 p# y
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
; A% k% e0 P6 WMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 a* X7 k0 i2 @4 ?' kMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) l8 Y' r2 k, f$ ~* w; O% I( K' f
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- R7 }' M) r: b1 O: }$ x
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& f5 s; p) v. e4 S; j( A( d6 [$ F
MCASP_RX_MODE_DMA);
1 B/ L* ~1 H' V1 F" FMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 _( A5 ~# U) }7 x) M' w/ }6 rMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! N, j6 F8 t7 ]. n9 P* l- v" L
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, - J: l) D" d4 J+ ?" f
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
: s9 F9 z% |* M* S9 \" SMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , q7 h3 b- M; ?: j. z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 a! {8 \4 U* K' ]8 j  FMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 p; D- k' A* e0 m
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. a2 n) Y. i. D" s7 ^McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
# Z1 |' [# @3 i, Y" m0x00, 0xFF);
/* configure the clock for transmitter */2 r. a# N. U* ]+ f, n) }6 u
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
' A: b: ~' {  d# J3 k; BMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
1 g7 a4 {+ H4 A/ I6 C" |, OMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 ~5 c, L% M) V
0x00, 0xFF);$ I4 {  e+ _; u5 H  a3 B1 _2 ^

0 o# c9 M, {; ]* q% e, W4 `/* Enable synchronization of RX and TX sections */
& `+ O0 I$ `/ [3 O' d, y- tMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( X# N6 a3 D1 L$ C
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
6 E. [9 @! `* ]/ Z  ZMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% ~; m& c2 S5 W( J; R; J3 I; `** Set the serializers, Currently only one serializer is set as
0 e4 v9 @7 q+ v3 p** transmitter and one serializer as receiver.
, }" ^% x$ G5 d3 c3 e' T*/% t% E/ h6 Y) L6 t7 r6 _
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
$ x1 [! X; l7 i4 D7 F9 }McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
" V$ _' L: f0 c6 ~4 y. ]' S** Configure the McASP pins 8 E" E0 h: m, ~' S- t4 p# ?
** Input - Frame Sync, Clock and Serializer Rx
$ z6 R3 V- l; |6 A+ B7 F3 q; X** Output - Serializer Tx is connected to the input of the codec ; _' c6 G' Y! B! T: X
*/
+ U1 x" d* u8 H1 e  HMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
  U" u( X' a* O5 A. dMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));; W- b$ o+ v5 h& B) m3 }( e
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX7 I# r, S* s2 c
| MCASP_PIN_ACLKX+ b9 P6 Y) M8 N
| MCASP_PIN_AHCLKX. Z3 ?* W3 a1 r+ t0 J) J& r
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */! r* [& k( g: b2 c% X! b9 A
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 c  s6 }1 _1 ]  t8 q% I| MCASP_TX_CLKFAIL - w: b6 ~) G7 S* _9 K
| MCASP_TX_SYNCERROR8 Z' p/ O0 \$ O2 Q4 p3 Z+ h5 |9 z
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
0 F9 r5 E% S( S% B9 ]/ ^| MCASP_RX_CLKFAIL% n0 y3 ?0 l5 T2 ?6 r) ?' Z' W
| MCASP_RX_SYNCERROR
) u6 f+ p9 t# Q| MCASP_RX_OVERRUN);
/ ]. r* b* C% ?- L  G5 D5 E. g}
static void I2SDataTxRxActivate(void)
) k! S3 k2 N/ E: W' g{1 u* O: c( D2 v( B# V
/* Start the clocks */
+ |5 H$ R- L# P3 T) f5 QMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
2 Q2 Z0 Y  }, D- pMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 A# E( a5 k2 O+ T$ z/ P! M' _/ G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. n, ^7 M3 u, t  g% {( V! m
EDMA3_TRIG_MODE_EVENT);( i. d4 B+ \) x. P8 M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
. d, k) r& A1 I1 I  a) D# M- z+ C+ z0 mEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ R7 B0 f, d# H2 ?$ JMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  J8 S1 c, A( {9 [0 E$ ^
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" ?" m- E6 m: c1 f4 u* Y7 \while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; E0 o: ~- z4 }2 K  |& fMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
- O0 E8 i/ ?- e4 fMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);% o* w0 ]% V# }& w/ e! |# ?
}
2 ?5 ~& t$ C: {* h4 i$ d' T
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* V) J+ Y1 o8 p; k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-26 23:10 , Processed in 0.039761 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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