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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8767|回复: 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,: a4 U/ F, w) q, ~6 J
input mcasp_ahclkx,
: n) n- K8 \# ~input mcasp_aclkx,
& _" A, d, M- J* u/ binput axr0,* T8 \' I1 ^) o! \9 r! p

" `* Y  z6 _/ B9 u( B5 l- ~1 l$ Joutput mcasp_afsr,
: Y7 }( ~' w$ X5 P1 \/ f9 V+ ^output mcasp_ahclkr,2 T, O8 h2 u& Y+ d
output mcasp_aclkr,
. E1 r. S5 O! a  B) @output axr1,: C) u! V% Z6 @; X
assign mcasp_afsr = mcasp_afsx;
5 p% \9 l. r, C9 K. r. Rassign mcasp_aclkr = mcasp_aclkx;
& O7 I! _6 b" j0 R3 E0 h5 {assign mcasp_ahclkr = mcasp_ahclkx;6 j( Z8 z, \. Z/ y5 F/ W
assign axr1 = axr0;
9 T- Y! g) r9 C* L8 X
' n, N9 a! i/ s  E, p
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
8 p. H* T8 D, f- L7 j2 Q! `
static void McASPI2SConfigure(void)
5 E0 x) Y) U: w1 ?5 W. k9 ?$ z: u{3 f# T7 _; q8 [4 f) v$ q) g2 _( x
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
( g$ L( l; z4 J$ Q6 K/ cMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. ?0 k. q- d0 |0 Q8 g
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 ]& v! G- Q8 E9 x( eMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
: M' Y. h* ]2 v/ Z# ^4 ~; D3 T9 PMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 |% X/ Z/ {) ?4 ^6 WMCASP_RX_MODE_DMA);, |- J9 u% m5 z  u' j& |7 ?( m- E" s
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 r" F/ h0 f/ i) lMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" i/ f# U, I9 J  @% ?- WMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; j- c; B1 Z4 c8 h1 ^2 B
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ F7 ^  G4 v3 g( q# U
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, % Q2 B) N- I1 N& T
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" Y8 g, [" |8 S$ d: M) T' r5 QMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
( E: V2 \9 t! y0 }2 b3 NMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
, s& y) ?% R" g  b+ aMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ Q0 w2 R1 J/ q5 V! B) @) {& R9 \
0x00, 0xFF);
/* configure the clock for transmitter */
6 g* m) x9 O  [( M- I5 @McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
9 o; l+ `5 O$ Q5 F; E2 m; UMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); . \) r2 X1 h: U% b8 G
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) \* J! F! C3 X
0x00, 0xFF);0 @" ?! ?/ z( C2 N  R2 v

3 a1 Q0 c3 }' r3 u5 b/* Enable synchronization of RX and TX sections */ 6 |+ N4 ^- t- V. @7 b/ L7 h
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */$ d* e. P9 v: a8 J5 p4 E
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
0 i3 A. |0 z. X; nMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
* y5 K$ Y, ~+ o! ?* J** Set the serializers, Currently only one serializer is set as
+ v/ D% Q4 ^" ~* u* B% \: Y4 L) _** transmitter and one serializer as receiver.5 ?7 s: C' v& e" Z  U; h, K
*/
4 U" Z. y* h# m5 G  e; \! X, S0 tMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
$ l$ E. {9 R) ?' ^. OMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  |) a& B  f2 _. b1 p. N
** Configure the McASP pins
& g# t5 \+ L. p+ G** Input - Frame Sync, Clock and Serializer Rx
2 e7 t5 F7 `$ h; z( J/ \% u** Output - Serializer Tx is connected to the input of the codec , a7 R% V" m7 n) _* \% p1 @+ E: N: l
*/
7 U. ]. T2 a( o3 cMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
% Q% m( Y  L# ~( wMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
9 d( K# @/ J% i, |/ B6 `2 t1 R: ]McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
6 [* K: A1 ]9 c0 m: R; X5 h- N| MCASP_PIN_ACLKX9 _6 s; C+ ^; P/ v: \
| MCASP_PIN_AHCLKX
1 M0 I$ Z. T8 o5 z, o/ f! S| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
- E/ ^6 A# X6 k7 A9 FMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: f4 @, ~3 g. Z- m| MCASP_TX_CLKFAIL . @6 L, l; o( a& y: T! O
| MCASP_TX_SYNCERROR8 ~- l) i2 [5 Y0 Z: E" C( Q
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . a* j4 G. O0 e3 f. w( u: Z* p
| MCASP_RX_CLKFAIL7 c, R! p5 q0 o- B4 a5 x" ]( `0 T
| MCASP_RX_SYNCERROR & g+ L. F9 P' Z" C- ~
| MCASP_RX_OVERRUN);( E7 }& m; c$ D0 P( o: b
}
static void I2SDataTxRxActivate(void)6 z# t( R4 e! j; Y
{
* r( E9 W5 V- L/* Start the clocks */
" n* }1 Y3 |% B4 K2 n, IMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- K4 M6 R: S8 i+ y( X
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& I: q2 ?+ ~' |
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% W1 {. F: ~* W& r) i: |3 mEDMA3_TRIG_MODE_EVENT);
7 H4 Y6 v/ r  g4 h: DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , H$ a1 ?) o2 v7 ~) S9 N/ j
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* X. g+ {) c0 P9 a% M2 ]7 ^McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);7 z; N" g6 ]$ k" B. ~
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */  W+ ~' T: u  {# J( ^3 t5 L1 ^
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' z5 ]  h5 }4 d3 W" BMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);6 @8 ?2 f# @0 V9 t8 O% T) G
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! D! U. O2 x$ t; P}

; o/ {/ ^2 p8 O
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" {& o$ e" c6 y2 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-4 16:19 , Processed in 0.038430 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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