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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11858|回复: 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,! }4 i" a* @. q: \
input mcasp_ahclkx,; W: ?# |* m+ S  d# v( p
input mcasp_aclkx,
) f; }% ^2 T, q) q; ainput axr0,8 J; R4 o# v2 d6 M
7 a' `  N% Z( E2 H9 T- ~9 o% ^
output mcasp_afsr,1 @8 F" @4 ~  W6 s
output mcasp_ahclkr,
7 q) Q% _& P; c- \- l! `" Joutput mcasp_aclkr,
. D. X% H' @4 J9 R2 ]3 g8 m" ?! ioutput axr1,
6 `+ L2 R1 b% e  K5 r( }
assign mcasp_afsr = mcasp_afsx;! O5 v7 }/ u& ]' f: o
assign mcasp_aclkr = mcasp_aclkx;
; ~, ], f& S9 @assign mcasp_ahclkr = mcasp_ahclkx;! O9 M2 c; w: g
assign axr1 = axr0;
4 l( v/ F" \+ _" ]* G8 @0 T
8 C$ {1 q% X& S& }/ O
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

! Y9 b' R4 N- c& m0 X# C
static void McASPI2SConfigure(void)$ O( x; B- a" ~: C/ p5 H. H
{
- @( V  ^* H( C* w' w2 uMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
  E# `. @) V- j0 [McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
/ P' O3 |' Q8 x4 s! p0 D8 \McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/ ?# M$ v' y" k* [+ v( XMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- p0 `. B$ ?& q0 K+ z
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% m% \& R$ ]# [* \( U
MCASP_RX_MODE_DMA);
4 X, p/ F+ D  Q  Q4 wMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; g6 p( f* a4 K; b! _
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; S6 V1 q7 u& n8 T! r: d2 J' E; gMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ J% k* E" K8 K8 ^0 r7 o3 ^5 ^MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 @0 |7 A+ }; B/ @9 SMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. i1 a$ a, q) j) S& d' jMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
& S0 p2 R! U1 {! H( [. F0 x" o* m* kMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 a; {9 k0 Z  d3 a. l- KMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 3 k. {* I7 c. l1 E: m8 V: @
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
3 u' j( i6 ]4 e0x00, 0xFF);
/* configure the clock for transmitter */1 f6 A- n: D7 n, z! x& r, U
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. }- V- g! |# O- |( \) ^" E' |
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ( j/ |1 o/ b  S2 y
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,& m0 u( S' [/ }( W- a& R
0x00, 0xFF);" J7 U4 a2 P- l- |1 i  @. T
( z* s# I' _9 Q: ]( E1 t5 N; C
/* Enable synchronization of RX and TX sections */ $ W1 ?4 C+ }& y/ G
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' T, n: B4 C% |$ MMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
: k. n. [( `1 N% KMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 E* a% L6 F+ x. {* [6 n* v
** Set the serializers, Currently only one serializer is set as8 ~& B0 B% G4 B+ ?& D3 Q1 Z
** transmitter and one serializer as receiver.1 H- B" Y7 S; B' ^% Z
*/
+ c' L8 T* @0 @& f( WMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
, C  k# j2 w% Q0 H. VMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*6 ]8 V5 x3 |% Q
** Configure the McASP pins + F2 p& [6 [( [8 U
** Input - Frame Sync, Clock and Serializer Rx/ }) O! ]% v7 {* }7 \* s
** Output - Serializer Tx is connected to the input of the codec
& k" e" H- x# J; X- v+ F*/: l5 f9 R: |8 E. U' M8 w
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 X& v# }$ p9 a9 z5 U' _+ {McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) W8 o. E; M$ E5 x2 ^
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& E9 U8 c, @: x| MCASP_PIN_ACLKX
6 W( D4 {9 j6 C/ ^; r| MCASP_PIN_AHCLKX
* v) y7 R8 e$ A! M  }3 G. X) _| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ m/ T* |5 ^9 k/ q3 D5 }McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 4 A) f/ b& |# v3 X! c
| MCASP_TX_CLKFAIL
6 ]" g0 u4 @  \$ m. F& s| MCASP_TX_SYNCERROR
/ _% C  ]: U( T2 X1 a| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : r6 M; }' ~3 k4 f1 G8 ]$ {
| MCASP_RX_CLKFAIL
5 T* {: @2 b- v# K& Q3 p| MCASP_RX_SYNCERROR
; t0 P! P( I8 \, h: m9 F' V| MCASP_RX_OVERRUN);% H% r2 }  X4 V& N3 a: f3 X& s
}
static void I2SDataTxRxActivate(void)
: d5 }; A4 |2 K+ Y1 s0 ?{" z! M" {7 K* i; U  s" ?. S  Q! ?
/* Start the clocks */* `' C" `2 u' H
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# s& y5 F/ z* [, @& ZMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. m/ B+ d0 Z) f% X+ zEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 X+ @9 h' n9 h: ~) g: y+ ^
EDMA3_TRIG_MODE_EVENT);
# w6 o  Q% k7 M# L4 j: ]3 e- eEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
- c& D) Y0 E9 X! s' o' e7 `; O1 IEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% x& K" H7 r7 T; a: u# j2 ~McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);7 K# K- S+ r. l
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 V* v" D# E1 N8 N# f9 O; ?while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
( [2 }9 y6 P6 YMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
$ u3 v+ h% K3 F$ _; IMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 f3 e, R6 @+ |, \}
6 c2 A) Z% c' ~; q7 s% u" p4 |5 y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* Q0 W& V! i( E( ?' y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 02:19 , Processed in 0.040511 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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