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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11997|回复: 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,: N) R, @; K2 T
input mcasp_ahclkx,; v& E0 X( S  T# R6 D, M% J
input mcasp_aclkx,
; m* |. C# k0 V, q0 y* r4 ]input axr0,
) L: `: |; W3 q$ W7 z1 @
6 Z5 h3 X9 t# g& h: g9 u% moutput mcasp_afsr,  {8 S' N$ L, m4 e- `% i  I. h& @
output mcasp_ahclkr,
. O9 F$ C& F. R8 e1 V; A  V! S$ noutput mcasp_aclkr," s$ [! h. O! C( m8 G
output axr1,; H* r& g. S  m
assign mcasp_afsr = mcasp_afsx;; V  K+ i, W" X1 n# M
assign mcasp_aclkr = mcasp_aclkx;! f6 W3 f6 j0 V! C
assign mcasp_ahclkr = mcasp_ahclkx;! _, V" H& M9 V5 V3 l) I9 n
assign axr1 = axr0;
( j) |: z, D/ d
  D& d5 B. o' W# P2 P. o- E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
0 f3 U: V. X/ I) {
static void McASPI2SConfigure(void)
1 X2 @* N- W. j5 g{
2 K9 G9 e9 c7 R0 M( Y( [7 AMcASPRxReset(SOC_MCASP_0_CTRL_REGS);; G% v. H8 {8 ~) g- X; x7 H0 y7 ~( w
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 h! ]5 S/ I) U( A- EMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);" e; x6 r2 t$ X& N. C. t
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */( i) P9 Q  _* r/ l1 t# ~5 C" N
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; w9 q5 B" J+ ], h
MCASP_RX_MODE_DMA);5 D/ y6 {" o' a4 D" s6 }
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ B6 E* ^* O  [
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 E) R# v# j% }4 S/ }; ]2 {) v; m
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, & t. Q/ I, t7 E& X
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
5 Y2 u  U( X. O" hMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 p7 i0 J* d; n3 DMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 g' Q* D/ c( g, ~McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 ^# p, O6 r& h/ UMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 F( n7 b+ d& ?/ I
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
7 A, p/ T+ ~$ o% n# {; z9 q0x00, 0xFF);
/* configure the clock for transmitter */5 {: o1 r: \" j! z2 ~# [
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# [$ G; j$ k$ P! n+ CMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 y. }. ^6 V# U' `# ~3 m! _McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& c& |# r, S+ d2 }: u7 Y0x00, 0xFF);
  q; X( ~/ V7 s/ d
& l  @8 I' W3 o, Q" e6 P/* Enable synchronization of RX and TX sections */
: }* _0 l% A+ ~4 H* g' b+ yMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */- O- I2 G' s$ j$ f2 x+ ]
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
+ U( F4 f' n, ~2 Y1 j. o% YMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 ]7 g2 `* H6 L4 f8 A& F+ o
** Set the serializers, Currently only one serializer is set as$ _4 P% n, C( g
** transmitter and one serializer as receiver.
, e* I2 r; y5 v*/5 u' t3 \3 d$ {  {& R
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
6 B7 g7 }: o( F5 n8 _McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
  Q) B$ M' M* H7 {** Configure the McASP pins
4 Y1 N+ c1 P2 B* F! F9 ]5 Q** Input - Frame Sync, Clock and Serializer Rx. A6 o  I' O( ~
** Output - Serializer Tx is connected to the input of the codec
& g) M$ p4 v  j$ Y5 d" ?3 e*/
$ ^0 ], q2 v* V) AMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ J0 t( G5 A, }# t* UMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));1 S- o$ Q( {' |( h: W: D( Z2 y6 b
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX+ t7 d6 h0 \4 v; m$ S  ^
| MCASP_PIN_ACLKX
5 d. W; x, Y- L2 Z1 ?: M| MCASP_PIN_AHCLKX) i  T% p' O) v5 X# f- C
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( V* q; O, o* J! g+ G* ]
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR $ N; t" @- R4 W( V
| MCASP_TX_CLKFAIL
( @& ?( J: K# ?| MCASP_TX_SYNCERROR
) O; B; e* \$ G1 t1 n| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 @3 P) q* L% K| MCASP_RX_CLKFAIL
3 `# ]/ h7 j, ~# ^! t) X; X| MCASP_RX_SYNCERROR * [( k+ `: u8 x- ]* z3 o3 i
| MCASP_RX_OVERRUN);" _+ E; a: A/ U/ n; D  A: s0 K0 h
}
static void I2SDataTxRxActivate(void)
- y3 Z. e" n, z- ^% Z- I- Y{
$ l* s6 J* y7 _; Q/* Start the clocks */* @! ^- [% J& _8 f
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* \1 J' F1 K9 p
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 x) J) d$ R0 L: g
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# d/ J) h& q: F, r1 PEDMA3_TRIG_MODE_EVENT);1 X( i  L0 T7 R$ a% }. M4 S" P
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
* j" {/ d, d- L& W8 w* uEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 Y+ `3 m6 [$ K1 ^, p, _0 k) J
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: N: }/ @. J$ x2 e
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */- z9 H  e! H/ M
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& J3 [& f! p) E8 n, d, V4 zMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; y3 X8 B. S+ U( I  X; Z* NMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ n* O7 R! \1 T3 ~6 Z- c}
$ R- |7 B6 d" R) H4 S
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 A' c! v( C0 ]- K! k1 H- c8 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-23 12:26 , Processed in 0.039129 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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