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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
+ J" _8 A. j7 `7 y' k; m1 Minput mcasp_ahclkx,; H, Q8 z/ R3 j2 o
input mcasp_aclkx,
( [- ~+ [6 r# Q8 ~1 n! Dinput axr0,
( y% h9 W: f3 n& t- b2 u( n
* j6 Y$ Y: K& s: Woutput mcasp_afsr,
  k. y6 P' p8 Q  Y0 C& _: I0 Doutput mcasp_ahclkr,. T/ l' Y+ t5 n5 I: s( j; k1 d
output mcasp_aclkr,' H1 G! L# {+ \+ g% r2 g2 Y# _5 |
output axr1,) k+ |* S/ O5 s5 I0 ]3 M
assign mcasp_afsr = mcasp_afsx;
, y9 G9 F) n" i9 @* N! b0 kassign mcasp_aclkr = mcasp_aclkx;
* R% b, ~( m6 \7 p: U# j, Xassign mcasp_ahclkr = mcasp_ahclkx;
$ \2 f) @! s# S2 J: N3 [assign axr1 = axr0;
' c3 _( I0 m! y) X. O

3 @# R, Y0 G& h7 F6 `% d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' X1 @6 U+ V3 X6 K: {. N
static void McASPI2SConfigure(void)
* S$ t* |9 b( W4 p: S{
- ~# ~: Q5 J" L9 G' `. n8 u; jMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ g1 O% V4 q9 F7 r; C+ KMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' K$ W; y$ o* |! p6 f
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);, e. @0 e5 r0 }) T# C  H# k
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */8 R# h/ o! v' _; x
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ W2 _" f+ W6 U
MCASP_RX_MODE_DMA);4 s: y! {2 H6 ^1 l. s
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, V4 r; w5 H- l' X7 K9 m
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 a  ~  t/ C6 G7 Z3 ?McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 4 Y& n6 B3 q: w$ e
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 a' z  e; N. |' M& i, l, j3 wMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& [  x) X% X0 B3 FMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  a5 T- Y; j6 _! N  G
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);! V. ]- t+ z2 R% z" k
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   l. ~1 T/ K- W7 _4 ?2 G
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," y: }4 M. y" R# ~' y) j
0x00, 0xFF);
/* configure the clock for transmitter */7 M' G1 H# r9 W' M
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 x; Q: L7 d8 cMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
+ h9 h/ n- C6 _4 t) CMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 f' l9 y4 h7 b' r' _( y$ N0 z0x00, 0xFF);
( i5 F* I5 R& |6 C) f8 P7 \. j2 \% O
/* Enable synchronization of RX and TX sections */
0 U$ Y/ W+ F" t' ^3 v% G) i% dMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
2 E! P3 w% \! v1 I  S: ~McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);& g2 c* Q7 o4 `  \  Q2 i4 P  b: E0 S% X
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
6 F* l7 k* b6 M4 g1 M** Set the serializers, Currently only one serializer is set as( h" s- K0 Y' L2 [  Z4 L% S1 ^1 ^
** transmitter and one serializer as receiver.8 K  m8 b$ I' a) e% [, E- g
*/( i/ F- S" J0 F7 F9 n
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 N6 ?, g) g3 T9 O
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) N7 @! m/ N2 h3 [" t- f+ @** Configure the McASP pins $ Y. z5 Y  a' r0 G; }7 u
** Input - Frame Sync, Clock and Serializer Rx6 W5 Y# r( T" I) F" R0 C
** Output - Serializer Tx is connected to the input of the codec * k  \2 R6 r: ^" T
*/; R* v/ K( ]4 D. R2 c3 ~; R
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 O) p1 {6 ]# z' L; A) T
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. N; r5 }# _2 V$ U
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX1 e5 |" [" W9 U9 J
| MCASP_PIN_ACLKX
% v, }$ A* K  @! p  G$ Q$ j/ c| MCASP_PIN_AHCLKX$ b' {/ J, S( C3 l7 @
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */1 x! `1 C+ b6 V& W& C
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 w- ~( D, W7 l% [3 T| MCASP_TX_CLKFAIL $ e! J1 @: r- v, b' Q/ X0 q
| MCASP_TX_SYNCERROR# v! h5 I( @2 D, [# e: e
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) d1 }% a3 \0 y. Q, I& ]. _2 \| MCASP_RX_CLKFAIL
' a% J! }: U. || MCASP_RX_SYNCERROR
! Q* R! y* ~1 l| MCASP_RX_OVERRUN);
; H, T4 e- H5 h, q0 F: V7 A}
static void I2SDataTxRxActivate(void)
" G7 j, Q% W  X% m* P& ]{
# D- k2 q" Q; v, @/* Start the clocks */" Q! _" x$ ^, g* w' c9 t
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- `3 h: N& J7 T5 g' fMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */# ]4 x- n9 |4 ~3 g% u# \# p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,/ S- N. p( l$ G3 v) \+ q
EDMA3_TRIG_MODE_EVENT);4 [1 h, B: m& B: b* A. k
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 @9 K5 r* Z) o! ]( T& V, R
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 W- X4 \7 m" GMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 T3 a4 j$ o$ e+ z9 h8 tMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  @2 P3 X- e3 m" E, [3 @while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# C. J% U9 x* g5 U. ^McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; ]0 P1 f$ J! k# Q8 Y# P  }) b' oMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
, _. j; B! f( ?, x: _8 Q+ }}
) k0 T- k3 t* A- I1 l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

- Z. D3 k8 p1 v. _, A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-29 18:01 , Processed in 0.046636 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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