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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
6 a3 T7 D+ ]% v3 U- Vinput mcasp_ahclkx,% Y* Y% J5 ~$ D) H
input mcasp_aclkx,
3 |; i8 f& \# S0 \input axr0,
( \" m( [$ b& B1 V
9 m2 V: t: H: doutput mcasp_afsr,
, L) b& V( ^4 n; A; J! u9 youtput mcasp_ahclkr,
* y/ Q- ?% u1 p/ j3 k7 boutput mcasp_aclkr,2 H. J2 a+ \+ X$ l4 h
output axr1,
0 n* j2 E' B! a% f
assign mcasp_afsr = mcasp_afsx;9 r! K3 }: b7 z5 o/ H
assign mcasp_aclkr = mcasp_aclkx;7 Z6 f+ B( ]( Z
assign mcasp_ahclkr = mcasp_ahclkx;% |' O5 F7 a/ F% J$ O( {
assign axr1 = axr0;
6 L% P, X2 o4 M

; g0 ~5 ^. H- r) h" Y* {6 c  K5 x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ }' d2 J! b5 _/ Z* i+ ]
static void McASPI2SConfigure(void)7 z, ]! H6 T! j/ Q, D& z1 E' a
{
" m8 E8 S2 R+ I- g; Z! p; E! ~McASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 H; s; P8 p: z, b. YMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
, u* V" I  F7 U9 PMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* ^* ~- w# A) @, K- a6 v6 R! H+ ~
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) o& l/ q" F! Y8 ~McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 Y( D1 z( T2 \' M' Z
MCASP_RX_MODE_DMA);
& V, l  s- Y1 H2 {McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& ?- _, u( M/ |7 a  P& T) JMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
) u! |# [: w  f6 qMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
8 ]2 |* h7 I9 M) P5 }3 nMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
2 u4 o& Q( `" m, G7 a# {McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 \. G1 v1 E* J" ]: c2 k& IMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" K1 t+ n* }: k6 l5 j7 N  nMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);- F6 v& d" e0 o
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
5 |0 P% ^9 y1 L) c5 @McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, T& T% E! m2 p: |; |4 B0 d
0x00, 0xFF);
/* configure the clock for transmitter *// E8 _. L! |6 }3 O9 W
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
) D8 {, j& Q1 V& M+ z; [McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
' s: H& a/ n' j/ I- o, KMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* u' G$ ~7 o6 D: w" W% {0x00, 0xFF);, X& S) `0 V0 F$ d. R, T4 P

3 V9 o  u% F) b+ O2 J9 X/* Enable synchronization of RX and TX sections */ + Z. p. x' ^2 y/ ~1 Z! J& U
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */# i) H& O3 v! C8 Z/ D3 w+ f
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ H: ?$ v$ g0 t
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
3 i" w/ c9 L  p1 r- I: s5 f** Set the serializers, Currently only one serializer is set as* m8 n2 Y- ?, z) g4 f& B- ?6 y' Y
** transmitter and one serializer as receiver.9 P; ~3 J+ w% H) o2 S# A) W
*/2 M! s: {# J& f7 A5 z( x% t
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& F! ^. k# `2 i) s2 C
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 {/ \( L7 s; F** Configure the McASP pins + u! Y" h8 t" D, K0 [
** Input - Frame Sync, Clock and Serializer Rx
7 S  _# S& r! F: _** Output - Serializer Tx is connected to the input of the codec * y3 u; W+ q# K6 T. a
*/
# r' V& W2 Y( k  P/ d# EMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
& `  s- c/ B4 f2 I1 M* R( qMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));; T0 O- x6 M  q7 R4 e
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 X+ t; w. t. S( D1 W
| MCASP_PIN_ACLKX" d/ E1 L9 y, x/ }  _
| MCASP_PIN_AHCLKX
4 q& Q4 x! N6 M9 d( b| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
6 L+ g3 I* ^4 W" k4 uMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 3 }  Q/ S3 w8 L' A( o
| MCASP_TX_CLKFAIL
  {4 _0 h$ J+ |  D  K- G| MCASP_TX_SYNCERROR) N( g; O5 s6 m8 ?* F9 t
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ l* W  s7 s+ K+ }9 Q| MCASP_RX_CLKFAIL
& }1 z5 M& f! c9 P3 F$ d| MCASP_RX_SYNCERROR
, f9 M8 J5 C& i- C9 S2 v3 {8 D# d| MCASP_RX_OVERRUN);
( q3 I# O0 T6 P. B4 |. J+ q& {- Y% T}
static void I2SDataTxRxActivate(void), Z4 E/ `5 o* R: K  M' \/ d
{
3 q' K0 s% p# T! @) X- p+ J% k5 x/* Start the clocks */5 x+ f- s# m$ @& S8 R
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
6 L) [+ w; ^  d* s$ W' y8 AMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 I$ d# p/ B: t9 P( E0 EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 ?* C+ l/ Q( d) l2 ]# O5 {
EDMA3_TRIG_MODE_EVENT);  f3 D% G& i( Q& Z) S$ L) F! B! h
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# ]! i) k5 X6 `! q# L: lEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 \% \  N& `* z8 g1 ?1 AMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
# E; f; c2 S& v9 p. ?) FMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. l0 h3 i5 g2 C3 ~while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; S1 o0 \% G6 ?: A5 l0 ^McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) ?: R$ \! g* x# L: N- Q5 }+ l
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 l) d) P6 V' q, C" K}

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

- k! v- n; M6 r# f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-15 01:38 , Processed in 0.040014 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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