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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8827|回复: 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,
; P3 X+ v! P% Jinput mcasp_ahclkx,
8 w' E; U; s% Uinput mcasp_aclkx,
* H" Y+ {; J. Kinput axr0,1 A, j+ T* I3 _
1 ]; E4 M: M) n  E2 x+ d3 L
output mcasp_afsr,
( ]8 u8 u8 a  u1 ioutput mcasp_ahclkr,0 _( l0 L; Z+ ^1 a7 y9 _) _/ b. j
output mcasp_aclkr,
3 A" E- d9 C+ foutput axr1,
% @0 ~' Q9 Q( s1 _
assign mcasp_afsr = mcasp_afsx;( \9 R5 {( X. b+ r* D  R9 {- ?
assign mcasp_aclkr = mcasp_aclkx;
; j& o% B; A5 j  \assign mcasp_ahclkr = mcasp_ahclkx;" |3 N, r8 H* r/ A
assign axr1 = axr0;
" ], v* s% d' ?. U

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

$ M7 |* o; P: J: |3 q0 l
static void McASPI2SConfigure(void)
5 U: g  e; @) ?( w% Z{
. C1 X' e; t- A/ ~; b7 N, \McASPRxReset(SOC_MCASP_0_CTRL_REGS);& L0 k5 Z1 E! A% J
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
/ o- R& I( g/ F! d. UMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 N* J% E  W! hMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */2 V6 |' u0 D/ I' x/ w: u
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 J  q. r! I% j1 t. H7 E, Z* T" K; ^
MCASP_RX_MODE_DMA);1 ]9 w; F9 @5 s% t0 N
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% i: _' V# v1 D+ g% g4 @
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
1 h# m/ G+ [1 y* K, l% I" g6 [# DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- y) c( `8 F4 n6 ]# DMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ F( p6 l9 N6 Y7 i2 G
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 i# P* P  @& XMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
8 }2 b6 ?1 Z" ]- |McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 O; k- ]  N, J
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
) a+ Y; U7 {! i) \. [% jMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( W% R$ N* w( k# U7 P& D" h; L
0x00, 0xFF);
/* configure the clock for transmitter */, S. ~4 {- p7 b; u/ m/ t( ^+ v3 U  u
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" k; k2 M/ j! L. M5 F
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 x4 T+ }& d- dMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 [/ d6 [2 b+ v1 y) k: E
0x00, 0xFF);
! R& `. F: f& M& m, B2 c/ K! U
- v* v+ A) t% `/ t2 E! K$ q# ^: |' I/* Enable synchronization of RX and TX sections */ - w, T5 G" F8 r1 P- w
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
; a( o1 s9 y& e8 e0 h" KMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 b8 I) y( @: w% J8 gMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" [+ Z/ m  a, x" P, \6 d1 k: j' k
** Set the serializers, Currently only one serializer is set as
7 |# V% v+ }  ]) O% N/ D7 Z** transmitter and one serializer as receiver.. D. w7 [5 ~0 b1 b' W7 |# p1 b7 t. w
*/+ [4 j9 T2 g7 _- K, G+ D1 V/ `
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);+ J) ^$ [$ D, j) p& b' m) c; o/ X
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
' Q) Z) S& `  @0 c3 j8 _** Configure the McASP pins - S( b; u/ [3 c
** Input - Frame Sync, Clock and Serializer Rx7 h* c  `6 p' d/ N
** Output - Serializer Tx is connected to the input of the codec
' u/ u% \; Y7 x8 o! n*/
5 f, C. w2 d( ^) V# WMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);# }; t+ T1 w2 T6 V2 r8 w  N
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
6 Y: R' l0 g) b- C5 dMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
; D+ |$ l& L2 q8 G; |0 f| MCASP_PIN_ACLKX% Y. n$ E/ C. S5 h
| MCASP_PIN_AHCLKX# @& S! Z& S) i1 a9 S8 o
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  e% @- P# j, n: O0 @9 P
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 ~2 a% {' k. P0 W* O7 Q% S2 w3 Y; P| MCASP_TX_CLKFAIL
6 E2 G5 c' {4 J  J. o6 M| MCASP_TX_SYNCERROR
+ P; K3 `2 d6 ?& U, b! L& m| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR / N" e7 y! S5 v; e5 L( }; a
| MCASP_RX_CLKFAIL
/ u$ ]" _# q/ e+ o| MCASP_RX_SYNCERROR / J# S+ e# @- y% c+ `
| MCASP_RX_OVERRUN);
# {/ r4 L$ F% Z}
static void I2SDataTxRxActivate(void)
/ i8 T' O( E$ R1 P5 r{6 ?: O3 Y9 s1 n6 R( y" l2 p9 ?0 j
/* Start the clocks */% b9 l; w% p. m6 w4 y3 T
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 K" p% T) ?9 G. `McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 ?8 A* |5 r0 ]0 G+ ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 X; R- F8 H* S) f4 lEDMA3_TRIG_MODE_EVENT);
# O4 Z, d% y$ C* ^5 sEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
, A: t: j( q+ S# }8 v9 yEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; B) R* r# c* d) P7 d% YMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, K3 E5 K6 ]4 B* l6 x* K3 DMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */3 @/ `9 e& _9 Q  g
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 X7 k* Y0 y& z( _
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);" }+ `1 q9 ~: I
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% R% Y2 w" o! s2 K3 C$ `}

1 x1 @1 C" g1 }7 U
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% r2 S  X2 R2 c8 B0 x1 Z0 Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-6 22:22 , Processed in 0.038635 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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