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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8377|回复: 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,
$ k) l8 @) U7 `2 T0 q% q8 ?input mcasp_ahclkx,( m, d9 @3 P8 u% K8 \  `% l+ l
input mcasp_aclkx,0 \& ]! i, i6 E2 z. \
input axr0,
* n8 F) o( d, o7 y
& f2 B4 G3 I# h7 k/ r0 soutput mcasp_afsr,
5 h+ a0 H+ }1 M/ n; houtput mcasp_ahclkr,& S2 o, W& t2 T
output mcasp_aclkr,
- o8 k5 w6 K0 u* `output axr1,
  z# h! A! X' C  O4 Z0 t. W
assign mcasp_afsr = mcasp_afsx;+ z- p' e/ G6 @7 i  I+ e; X& m
assign mcasp_aclkr = mcasp_aclkx;7 m5 g. {) G; A
assign mcasp_ahclkr = mcasp_ahclkx;
8 W( r" S$ j' [- @8 K. z8 P# Oassign axr1 = axr0;
8 f+ S; K; n9 s5 y5 X0 _( n. H
3 G: j9 E) ~3 o" N7 S) K6 |& ~- i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

" D5 Q/ s2 }) v5 @; f
static void McASPI2SConfigure(void)
3 A! w, {3 L: k# X, y{
( b9 ^, L' u. L0 v% v: NMcASPRxReset(SOC_MCASP_0_CTRL_REGS);1 E( G/ p) K, P+ |$ m( s7 l( w
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% H3 d8 w+ i6 E0 W+ L; \McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
: {6 _0 F% g4 }0 {McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */2 Z' B. I  f" \5 r5 J+ `5 e
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! ~$ Y8 k* c2 R& \- u/ m* v) }MCASP_RX_MODE_DMA);
* w0 T1 P8 K+ T! k  o* q% F* A& JMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 x* A  p" C7 f; B# Z
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
2 v5 G% `$ v' a' x7 Z' |9 \McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 1 B- J! N! [6 @* S1 `
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 T% t# P/ U5 [McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
% q, J& H# F, O1 F- ^" cMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
3 ?" b+ d9 {8 |" M, }  lMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 u8 M5 @+ b# x/ R4 m! @
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & z  p  g8 q8 \5 _3 }: L
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! X( R1 M- Z) o0x00, 0xFF);
/* configure the clock for transmitter */
( I4 O# M$ F  K/ CMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) g/ p7 I. h# @# I% r4 g# K
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
; B. v/ b/ o+ o4 XMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 v6 H" t/ V; p5 V' D( {0x00, 0xFF);
  E2 s/ ~" r% |
4 L0 P9 Z$ y+ P' i4 X  a( g/* Enable synchronization of RX and TX sections */
0 [# O2 a: Y3 d" z; N" D+ I$ h% y2 uMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */- ]  J1 x; n3 T3 f* u, [
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 @. H. d% I4 j' J' G! T+ G
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- F7 e8 Y2 l- q, T+ v7 L** Set the serializers, Currently only one serializer is set as' ]$ o+ ?/ K/ r* i7 p
** transmitter and one serializer as receiver.3 X8 D2 g# e6 f. Y# |
*/
  e; _) X. ^& c( D  {' QMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 v" ]0 e; k% ?McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ A7 D+ _# o$ J8 L! `
** Configure the McASP pins " M+ b1 [9 o# h6 Z! m! Q2 O% o
** Input - Frame Sync, Clock and Serializer Rx
5 v1 l: t8 C- j# {1 y) k** Output - Serializer Tx is connected to the input of the codec
2 V7 X9 L. m: W* T4 W8 F*/
9 d  b  _; u& }. [" J; ?* LMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 K0 @$ z! j  I  f& Z# y1 O0 _McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
2 J# j7 \" i4 z+ i' `4 `& d, ?$ QMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 d1 E) W( ~* G
| MCASP_PIN_ACLKX
' u8 U& \* z+ |/ E  H| MCASP_PIN_AHCLKX$ v: \. D7 H3 p0 ?# D
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
1 h5 `7 k# m. [* a9 S$ OMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 g* X+ U. l: G& Y| MCASP_TX_CLKFAIL + z% u; v1 X# @0 f4 @2 \
| MCASP_TX_SYNCERROR
- [& _* z) g! o8 I) o| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) J, N1 j# o( p
| MCASP_RX_CLKFAIL
3 [+ K8 E/ |5 M4 Q1 }# _+ G3 \| MCASP_RX_SYNCERROR
1 \# a1 k' B/ ?# c| MCASP_RX_OVERRUN);+ X3 ]( `8 ~3 |0 g2 H" K# ~
}
static void I2SDataTxRxActivate(void), M0 n' ~: W/ g+ {
{
8 H9 ~( T8 `. I5 V% q! D1 |! _# n/* Start the clocks */
) U1 i8 U+ Y& V. wMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, @7 L7 c) `( TMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 d# d4 }6 n: v  I/ H: y7 J9 V7 p: V; KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ o8 ^% Q3 s) H- dEDMA3_TRIG_MODE_EVENT);5 H, I# b) c# I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  q2 |7 N. ]+ uEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */4 g7 c( i7 O" Z) s  u9 f* E6 j
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 y0 ~* c& M; \5 ]/ C( W' I2 bMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */! q6 p5 c) {6 q* Y& w7 ]
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
9 j% y' c* u. L( u7 D$ [5 \McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
3 n+ [- g: ~$ B2 f1 dMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 I* m3 k) G" Q
}
  y! M) l" e2 L0 J
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, F7 w: {& J8 M. a% Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-21 02:34 , Processed in 0.039314 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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