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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11868|回复: 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,
( e% c4 V, t2 \( `input mcasp_ahclkx,6 @+ H1 ?. L3 B/ a
input mcasp_aclkx,/ o- t+ n  x9 X. T' I9 W# A: h
input axr0,! D1 v$ T# P* N, K: @- m* d8 a" G! T

2 ^/ X, U' U# _* q3 L- S& coutput mcasp_afsr,
/ ?/ r7 ~8 O7 u) _( Y5 s# soutput mcasp_ahclkr,
1 M& M9 N9 x5 E) z' boutput mcasp_aclkr,
1 ~$ w. |, `: zoutput axr1,3 Z' O3 k# u" {# w* J
assign mcasp_afsr = mcasp_afsx;' |$ l) x" q+ M
assign mcasp_aclkr = mcasp_aclkx;& C9 S9 \6 X9 U% y& W
assign mcasp_ahclkr = mcasp_ahclkx;7 _7 W7 E6 N! G! b% I# ?
assign axr1 = axr0;

6 x) \; X+ r2 R9 \/ r: G- k4 e* D% s- c8 g& Q* v+ ?  W5 N
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
! g' G" H. |9 f' m9 L6 Q( P
static void McASPI2SConfigure(void)' }8 j* b, U0 G5 M1 i( `5 B# u
{
3 ^+ ~3 [  b# f! x+ |McASPRxReset(SOC_MCASP_0_CTRL_REGS);" v2 d$ J! s- Z  g% Y# K
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# ?/ o# _6 t% S4 w5 o5 T6 QMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* r8 u9 C/ k% u+ ]5 L- i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */5 n8 }. G$ U' T( x) q7 \
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) \9 s' r# f5 v- D3 N8 M+ w
MCASP_RX_MODE_DMA);
% M4 i$ H! f" ?1 A' o9 E; jMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  q6 e/ `. m* U+ f* }MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
! A& q  X1 g* @0 Z% ]2 j) JMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 u) |) q% T/ k$ [" cMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) G( R! A$ L3 ^$ IMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , h  I- R* x: q7 q3 s4 d
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */5 k! z% o5 I7 t2 M+ M
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* W1 h" i- y7 HMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
- l: a; r7 }3 Q* EMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
4 L2 ]5 b0 R( P+ k0x00, 0xFF);
/* configure the clock for transmitter */9 ~6 _8 Z: q/ B2 ~5 r6 T
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
) F: |8 G! m: L* ?# U1 RMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
' c+ C, z2 |% {3 mMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 x& x/ @) ]0 v+ V8 x- B* ]8 E0x00, 0xFF);
* w6 m% |& V  n* N8 v7 K6 K
! b/ Q5 ^$ u& Z/* Enable synchronization of RX and TX sections */
+ @4 b! A* [6 W, W/ J) F) \McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 @7 U( Z9 Z9 D2 gMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 d/ Z( n' c! O$ i3 J" {
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*6 M( l8 X* x; w9 ^) a6 b' y5 w8 v
** Set the serializers, Currently only one serializer is set as9 ^: D# B3 J; [. o# S
** transmitter and one serializer as receiver.* c0 s; k* l, w1 |- ^  @2 o. d
*/5 _$ b* T% [7 c+ T5 Q' |8 g
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; \' `; I4 R8 j: u# [McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ o% u, L, V: ~1 _6 A5 q
** Configure the McASP pins
9 U- X8 f) \" g** Input - Frame Sync, Clock and Serializer Rx+ G# `! E0 y- [( x5 h3 C  X& \
** Output - Serializer Tx is connected to the input of the codec ( b8 {) j/ _* A) L  A$ p3 W
*/
4 k- R4 {& C; LMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, n# d( V' s; \( t5 {; u
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ i, p- X6 T6 B! D+ NMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX- X/ K% y6 H1 h/ F4 M& y
| MCASP_PIN_ACLKX) g7 G; A# l1 ^4 P4 y, w
| MCASP_PIN_AHCLKX3 D* Y! s5 u, k, ^: X2 X1 T
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ E' v* g) D$ {: k* w4 iMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR , U3 _4 w! E3 N4 s
| MCASP_TX_CLKFAIL
& \9 \6 z9 L) L3 B! f. X0 l# @; ]| MCASP_TX_SYNCERROR6 |9 t* Q$ k' x5 X1 B, ^5 g# b
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ _  f) Z( w. j3 C* S$ `| MCASP_RX_CLKFAIL
& i3 F) V# q' e! g, j, R| MCASP_RX_SYNCERROR
  a9 A- I1 m& ?2 n' |1 O| MCASP_RX_OVERRUN);
  F4 E" U2 G, b9 r' o3 U' h" g8 @}
static void I2SDataTxRxActivate(void)/ z! E$ w8 h0 Q4 S
{0 K5 T: N, r$ a
/* Start the clocks */  }5 l; m( F7 x% w( ]4 `
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) }# \, x& {; S! DMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
# n8 R' Y# I0 k! D2 A9 @EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
/ n: X  \8 ?) j/ M: |4 UEDMA3_TRIG_MODE_EVENT);
' {2 Y$ V- B) K! GEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: h2 R) u- \) v/ C6 IEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// R! L$ d+ H& U
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);8 h. d( \2 B" E
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 ~2 _* j$ V8 E7 i! X6 f; M0 y( gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */* e! u) q, k1 m: U" u; v
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);3 S# F& W8 v0 C  ]; N$ b
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; o5 ^0 E, X% D& v0 `
}

6 C9 ?* y- k4 v7 c, ~+ h
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 W: U$ u. K. e) {  T- Q6 R: M' D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 16:29 , Processed in 0.042095 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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