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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9645|回复: 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,% m! T! s6 p; [( ?# K
input mcasp_ahclkx,% s6 ?- i. L( _; @1 }
input mcasp_aclkx,
- w) }" s7 j9 O$ G8 h  k  dinput axr0,
) Q& H7 ~7 L, J& Y
0 E) h$ F8 L" toutput mcasp_afsr,; `/ U8 ^* |3 N
output mcasp_ahclkr,
- r0 E, Y9 M' doutput mcasp_aclkr,+ H: `1 I$ b" z
output axr1,
* {+ d* x3 e$ k# e% K; u
assign mcasp_afsr = mcasp_afsx;; n! M/ p; g2 h& T- t5 W
assign mcasp_aclkr = mcasp_aclkx;
9 T$ T9 t9 s& W9 E9 Z+ Qassign mcasp_ahclkr = mcasp_ahclkx;
* o; f3 F7 J8 w. }- N4 g( bassign axr1 = axr0;
7 W  u; S3 b( S

; l, Y/ T* y8 L( U3 [% B; b
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

* v7 |  |$ Y( x# _# `8 c+ Z
static void McASPI2SConfigure(void)% E1 l, O2 b- f* C- J/ n
{, w' N4 L1 \7 K6 R$ T
McASPRxReset(SOC_MCASP_0_CTRL_REGS);/ y0 {1 I. ], G8 ?$ W
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
2 q& r  R3 y% n: F3 O  x1 ]6 NMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! A% b% f. Z! q  ]. o3 d0 nMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */$ o' c- n$ ~  T* H- B
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! l7 W6 p% Q, l$ Q7 D3 i9 OMCASP_RX_MODE_DMA);) {- i+ w  s0 X% A7 P0 U$ v$ R: x( T
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. z2 U" l  N3 z. K
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */  P6 N9 y8 l+ R8 b
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 e, x; e; _4 J$ ^4 e  F1 ^
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 U5 ?- s# J6 V8 o9 |McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 `" l* {& G0 N) p. B
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
9 ~. }2 k4 F" f, b4 IMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 m7 r0 p8 v# V# [
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# J% R+ {* e6 ^* TMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,! J7 h6 b# m: j# A
0x00, 0xFF);
/* configure the clock for transmitter */
' W8 `& w( f3 ~; c5 l" a1 zMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
& [+ M9 }* t; a' s2 FMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! o: U! ~( z$ ~/ _5 F/ Y: v
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# O( |2 K$ w- q+ g% _3 a/ r0x00, 0xFF);
/ A3 ^9 [9 v6 _. v/ G5 C- S, c, q, N) h1 W
/* Enable synchronization of RX and TX sections */
* S0 Q4 a( H9 ]1 I5 t! I* UMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- D  b' {: E! l, T7 Z; p$ w2 xMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' q# q# J' s7 ]' f  g* \
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( @$ K$ B, R1 ?4 p
** Set the serializers, Currently only one serializer is set as
: {+ G0 c* R6 n** transmitter and one serializer as receiver.
" a, }  W! F( E  I( w5 ^  E*/. W( N: R" u. j, O% v& @& d# `
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
1 z5 Z- m' g/ w" AMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
; `* c1 U# |4 j/ \* e** Configure the McASP pins + y6 Q' b2 }' J+ K+ ^8 C1 p
** Input - Frame Sync, Clock and Serializer Rx
+ G1 Z! C  J/ n  s5 z* f% w** Output - Serializer Tx is connected to the input of the codec 5 r1 i% }* r5 V7 p' k! p
*/
& R0 H+ x- Q! }0 @2 M+ cMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);% O8 q7 D4 M7 U, P% p) L4 ]
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! F* B) G6 U; `3 G# r) h4 r
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX2 j; Y  h* o2 I2 F  M# x4 ]: e9 g  O
| MCASP_PIN_ACLKX" @* \, o% w& y/ a
| MCASP_PIN_AHCLKX
& W; ^/ [5 n" p2 y2 H8 E2 U6 L. W| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
8 p. b2 Q$ [, `. XMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
9 G. i) Q8 o% `! W- y( j| MCASP_TX_CLKFAIL
" v: Q7 X9 |3 F. a8 K. X# Z| MCASP_TX_SYNCERROR% `. L2 {0 i0 o, e( P0 n' S& q7 ]
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR , F' z9 u* z, I; r/ `0 j) D9 c1 R
| MCASP_RX_CLKFAIL& }- _( ?! R1 k( @
| MCASP_RX_SYNCERROR
6 Y, z2 k4 @$ [% i4 L| MCASP_RX_OVERRUN);, Q4 I. b, @% y
}
static void I2SDataTxRxActivate(void)& t9 Q1 S& e, r8 z9 I( r; Q
{. e8 a) u3 o$ ~/ z# i! w( U- C
/* Start the clocks */
( j. b8 s$ x3 w, |McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, `: w' Q8 m/ H" k) m" TMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */  T8 D# |: k" y1 k' p0 v' {  U
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 |8 `; a5 \) V. j6 |1 g# t+ ]EDMA3_TRIG_MODE_EVENT);
, z& M+ F  H6 q8 C8 REDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * r8 L/ l: j: W  v& B9 S
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* c) Q% s: Y1 M  ?6 `McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* S5 ~. Y3 R# J# fMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */, {( X) n' r7 x1 ?3 z1 p
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */) R) h! x9 N( m! X1 l
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);" T8 }. Q7 d5 Q4 L; s
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ P1 M* B( [6 g}
6 v1 v) h, _) h, U6 g4 Z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

7 s1 z' \* }" j8 W( |- g. _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-16 04:08 , Processed in 0.040224 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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