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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10190|回复: 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,
3 j2 C7 d  s4 W, @# B  o- s& Zinput mcasp_ahclkx,- m' d: V$ w' N+ d$ R
input mcasp_aclkx,' w1 g6 C+ ~( H# H: C
input axr0,5 g& x& o" x- g

) X8 C- c0 R  d/ Aoutput mcasp_afsr,- ^0 I$ X" ^; y: j& @
output mcasp_ahclkr,
$ f8 N- Z* ?) w/ f' q. Youtput mcasp_aclkr,
3 M) N/ D) {8 a: L" Houtput axr1,
) x; d' L, J; `& b% N# O
assign mcasp_afsr = mcasp_afsx;3 n: v9 r! j; s# o
assign mcasp_aclkr = mcasp_aclkx;
5 V5 @. S! \+ _+ \6 F- Iassign mcasp_ahclkr = mcasp_ahclkx;3 z8 x9 v, |  O' `
assign axr1 = axr0;
; Y' M1 Y0 ]! r9 N% @& @) o3 ~" P

7 c* P& n$ z% }: a$ I% q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 @: C/ L! E' m6 b
static void McASPI2SConfigure(void)
' G) T/ b0 L& @7 U( y; g{
4 ^3 D! f+ W2 O' G+ Z( u+ OMcASPRxReset(SOC_MCASP_0_CTRL_REGS);5 j: d% E/ k; W! s3 d/ l- S% L% s
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
! x! G& G4 Y% f& fMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! q0 {! w* y9 Q: T4 S! U8 Y, AMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
& _2 s1 M* T2 Z( f; g3 H4 P/ I0 AMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, I; x. d+ v$ m3 A# b  S0 f
MCASP_RX_MODE_DMA);2 }; F' A' {; v' E1 X0 G
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 \. X' y! F# MMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 h0 s1 B4 ^! N' K3 o& {# m% J2 E2 QMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
  U) s+ P- J; D( r1 O( h6 @- g% a' lMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 D& u; n0 u3 \( }McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, % P) I5 _) s+ B, [0 c5 j- P
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: G8 G# h% s! Z  n% \
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  P8 w+ i9 [  p% }McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); : L+ r5 l" c9 `/ p
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% F1 ~( W# s" X/ L0x00, 0xFF);
/* configure the clock for transmitter */
9 b4 M' x" l/ b! L' a2 XMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# Q8 {5 X9 U, kMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 Q( H0 s/ [: Z4 |' eMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* A5 h0 K1 m/ E1 V* ?$ b0x00, 0xFF);( N. ~( M: \# D4 k% P- p; H5 _2 Z( H
" p0 C. A5 J, D$ W' M* P) M
/* Enable synchronization of RX and TX sections */
4 G8 s9 s7 f; h0 w4 {) k. mMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; _0 z) T( E9 U4 p$ g
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ ?% f! x5 n4 T! N% SMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 K% J2 q- U5 ?% v
** Set the serializers, Currently only one serializer is set as* P* n  w) P9 J# d& D: g
** transmitter and one serializer as receiver.
! _& p# O, ^2 x*/
3 M6 F# D% j* b, y1 CMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
2 d0 R& n$ a% U- m* ~" ?McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
, N( M: p0 ?7 h  a9 x+ ]** Configure the McASP pins
! _. @7 |! ^  b8 l/ Y- `$ W** Input - Frame Sync, Clock and Serializer Rx
' n- K" C0 {1 W6 w  N** Output - Serializer Tx is connected to the input of the codec # J& R7 I' Z0 X, ?
*/, A% a) v7 V6 r5 E; n, E
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! r* ]1 E$ x, l# HMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
2 D4 [6 U; a. j0 O, Q) ?  mMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX5 v, K  t& y/ E+ b
| MCASP_PIN_ACLKX, B2 s7 d1 ?7 @
| MCASP_PIN_AHCLKX3 e& h# `* s9 J! a. \' V4 w8 M
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */3 F8 ^) _$ W2 m2 _' h( x
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 N7 I7 {' U# m! e5 _0 t6 M) O| MCASP_TX_CLKFAIL
$ \0 Z8 `  B# @5 i/ a2 o| MCASP_TX_SYNCERROR
0 r4 o6 I  d# c, w( }| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 9 W; K- i1 P: v% p7 U# t% G' b+ L3 b
| MCASP_RX_CLKFAIL' s4 F, J+ b. u  h* ]
| MCASP_RX_SYNCERROR
- A1 a( l5 l# s. D/ Y; x| MCASP_RX_OVERRUN);
+ `; ^' Z- q6 G& @9 ~* b+ X}
static void I2SDataTxRxActivate(void), K( \2 Q  Z1 g8 E5 f5 m8 h9 p
{
' c; t* l0 F1 }9 o' `/* Start the clocks */  z, V( M6 m: U4 o9 @
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 Z8 d5 c3 n. b" J0 EMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; y; l7 w1 i2 X8 G9 fEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 h4 A0 ?% |+ P* L1 ~0 PEDMA3_TRIG_MODE_EVENT);. p/ w( ~( V) [# h
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 L: ?8 c: q+ s2 p3 |9 ~8 {& qEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
7 \1 M$ |# n! p9 v: T9 d- T" t3 CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);8 X) |7 [/ x, f- a# q5 j' o* S
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
; K+ |$ U2 U* @; j$ w" f5 v. ^while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ `0 ^8 k" U4 |* }
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 T- ?6 h& e# J" p* d1 k: l
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
, N' W. X7 K$ `$ J5 w$ V1 ~}
) m$ A# @1 @$ p, ~
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 O1 T& t) l3 g2 _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 07:54 , Processed in 0.041750 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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