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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,7 \1 A1 f) s+ X( U# t1 S# T
input mcasp_ahclkx,
5 @: G- e( r; ]input mcasp_aclkx,% T# s6 v- ?7 c( Q- O7 I- Z
input axr0,
( t4 U" w0 M! a- X; V( b4 u+ J& y* f$ K
output mcasp_afsr,
  W% [8 N5 ^! P' |3 f+ r, A% eoutput mcasp_ahclkr,7 [% Z. Y- F6 d0 n) B
output mcasp_aclkr,/ w6 G  v( ?7 P* E. h( k
output axr1,9 d* k# T" }9 P) B# W1 W9 g, g) k0 i
assign mcasp_afsr = mcasp_afsx;
; @  [4 q% U1 M4 E6 I1 Kassign mcasp_aclkr = mcasp_aclkx;( U7 S7 y5 N. M, n9 @
assign mcasp_ahclkr = mcasp_ahclkx;+ Z8 K1 b2 X0 N3 z8 o% [
assign axr1 = axr0;

% B! d! s9 Y& ?' H9 R* M' X6 {5 B5 C+ o; T
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; d; q5 ^" C$ F8 L* j, N8 Y2 n
static void McASPI2SConfigure(void); z6 e" r, ]. e9 c7 Y
{
8 q# f' |6 F- ^" |McASPRxReset(SOC_MCASP_0_CTRL_REGS);' A1 d: M+ z1 y6 q% k
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */! v8 w2 x2 {* R/ t+ r
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 N. r0 X: }2 N; U! V, \
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
4 O; V& A7 ]8 X5 a7 eMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: Q7 h& p8 t  b1 O6 ?. w* ~: _
MCASP_RX_MODE_DMA);
* {" k" E( u! h5 k5 ?+ FMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. x1 f: t, p5 O9 B; ^' O
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ Z' |, e) o' G7 u5 \, Q4 C8 w
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 9 C) ?! N# _5 h: e* {2 D) H
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 X# l6 L9 m3 M, L1 `! [0 v- o8 B
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. e3 Q+ Z- K* R7 U; Z$ zMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 ^0 z) a+ i5 l% [3 c0 o2 \McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
+ t$ O0 I' X( i, Q' sMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! l7 n+ H3 {8 A6 D" o$ ]McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
" X: ^6 O* \* u" S, V1 v, Z0x00, 0xFF);
/* configure the clock for transmitter */5 [& R) x- k$ E0 i: {! Z; g' t, g
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 }7 X4 I  y) e; \# e( EMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 1 {. F$ m; W3 ^# h
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% {! N( D+ t% H  C! W4 G4 ^) ]0x00, 0xFF);8 O  G! J4 o$ G
# F0 i* ]- }6 r
/* Enable synchronization of RX and TX sections */ 4 o: V% v" C4 ?
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" J9 s! d4 y( B& d: nMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) V7 O! s- B5 Z" j2 U" k: V! oMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
) l9 y- q- X* L3 y** Set the serializers, Currently only one serializer is set as5 J* \* ^; b9 ~! B: \
** transmitter and one serializer as receiver.
( u0 e- a9 |# W7 P5 k1 N# Y  z2 a*/% z2 `! h: W! p% X  y. Z* I- K
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);5 _4 g6 }7 W% [9 o! s3 G
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
' ~6 c, `" ^, {: f+ n; d** Configure the McASP pins
3 v1 N0 d0 u; v8 E4 C; E4 A** Input - Frame Sync, Clock and Serializer Rx
! @8 x  |+ g% S& f** Output - Serializer Tx is connected to the input of the codec " q+ U! t& o# c6 x  M4 h% U
*/
) o+ w. C% H! eMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);; |$ G6 q! o, p
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
& A, r! N* n- ~$ n, NMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
5 G8 H+ _; Y7 F3 g4 F9 G+ _- n1 x| MCASP_PIN_ACLKX  T; X& U2 a0 o5 v* B
| MCASP_PIN_AHCLKX
3 X6 j* c3 A. H4 I6 A8 S& l% _| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* o) H3 L+ o, X/ W/ g# @! `% ^
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# A) q6 W' }7 S: ]| MCASP_TX_CLKFAIL 0 C. t3 x6 I  s  y
| MCASP_TX_SYNCERROR' ~% C  ], _; o; A. A* `
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) z$ E0 @& R, {% B4 P$ o| MCASP_RX_CLKFAIL
0 a/ i9 h; q2 J" S  O7 \| MCASP_RX_SYNCERROR . z8 e  b) E. D0 S5 W: g$ J6 Z# z/ Z' O
| MCASP_RX_OVERRUN);, k, w  r& K% O; L7 M& _0 y6 \) G
}
static void I2SDataTxRxActivate(void)
5 _* X$ b/ b1 k( X{3 a, g& b. n1 E+ o
/* Start the clocks */8 ^7 |1 f1 e5 I
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);. k, w* t% c! D+ b  D4 _* v8 U
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
$ U: V* x% o+ F, }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; P! D$ W2 `: i( p1 ~
EDMA3_TRIG_MODE_EVENT);/ m( A, m1 O$ ^( j2 l) g" E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
* b# f9 o+ Y! o4 x; TEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 r' ?+ q* u8 W' K& M, `McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 G; {8 C; [9 E7 f2 bMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" ?" [" I% E" f( fwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 H; `0 e, ~4 Z) A
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 w* O8 R3 `: [3 Z/ TMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);6 d8 v9 w) B* F
}
7 X  S4 H! [! K9 M9 F2 i& o
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: i) {+ P' q  C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 04:18 , Processed in 0.047616 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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