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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12917|回复: 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,8 m- j5 N5 ]* E& i( h
input mcasp_ahclkx,
# y0 R% m8 G) s! jinput mcasp_aclkx,+ e% I% B6 Y7 h' [7 X
input axr0,
2 ^- a  @1 `3 U& V& |6 @9 Z) z7 N' k. Q3 s5 J( |
output mcasp_afsr,3 E1 _' t1 u) T! n
output mcasp_ahclkr,: [# i, S% @! U  g! c6 F
output mcasp_aclkr,  l! H6 x3 Z+ b+ d! G( P
output axr1,/ }$ T/ X+ M% O$ i6 \& P
assign mcasp_afsr = mcasp_afsx;  S/ S' G  G/ M. y& D% ?9 I1 j% e
assign mcasp_aclkr = mcasp_aclkx;
$ U! c5 i* F$ E9 _( Bassign mcasp_ahclkr = mcasp_ahclkx;
, ]2 }* S7 ]6 jassign axr1 = axr0;
8 T0 ?" n8 v4 ?9 G/ a/ n3 A  Y
! Z8 {$ F5 f- `( w, e! A: G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# t: `- K# Q& `
static void McASPI2SConfigure(void)- }+ _3 M! S6 P- y, W% W9 {/ n. {. N
{
% R' Z* r* h$ V) q$ L9 v. FMcASPRxReset(SOC_MCASP_0_CTRL_REGS);/ M4 C- R0 O* |' ?. t& h
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
  V' N6 u: Q5 Y3 V* dMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);2 f8 ]4 j# \' P5 k+ `) [5 M0 K
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */1 C4 L: }  [. C9 A- ?$ k
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, X+ f- o* f! B
MCASP_RX_MODE_DMA);/ d5 p. q/ R, Y, T' ~8 m4 X! ?
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( {# h+ e) J3 y9 F! _
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
  q& e- ^6 N! ]8 |1 n* YMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ! p4 _7 w$ C; p  Q: C
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
; i5 B0 ~* ]8 GMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& |! I6 P1 C( ?. DMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# V0 ]3 J! G6 H1 Y, n; f; S2 xMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);% T  J' ^1 c6 |6 n* @5 w% g# Q
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 4 `! {& [* Z* U& K" |
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
" f& _3 j: ^9 Y0x00, 0xFF);
/* configure the clock for transmitter */
- q0 H8 ~2 W4 r5 h3 eMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
9 f1 `2 p& X4 n8 uMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ( ]) T& p3 E' w; Y: Z, Y
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,5 E* _5 b4 G+ R5 e5 C7 e% z
0x00, 0xFF);2 q. f- G8 z/ S' F2 p

1 [  I8 M+ W: [9 _% S/* Enable synchronization of RX and TX sections */
$ w8 L( a. I* L& H$ hMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 j6 v; R9 p  M- W+ ]McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);. r; a9 b* X9 T
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 i1 [6 l5 T; _4 a6 I
** Set the serializers, Currently only one serializer is set as
7 {' D6 h& |+ k- O3 n6 ~# q** transmitter and one serializer as receiver.
" |$ R) r# I- a; q1 _) a: z*/
: k# t; \# l2 D8 q% o' r/ _9 m3 f, ]% HMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
6 B" C! {, k0 |McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! d6 h2 t% q) c/ `** Configure the McASP pins
$ G' b: L' }* Y1 K) Y" g; E** Input - Frame Sync, Clock and Serializer Rx8 W  I# i! D/ {6 T3 n1 k" u" f
** Output - Serializer Tx is connected to the input of the codec
, v/ K% X" D" G: F; A; N*/
+ n. X& v" S5 y! o- l& m% YMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
& v1 G5 ~& Y  c. a4 G! B+ W0 B6 _McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));# j% [8 o  x5 ]5 D. r
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 A6 @$ D) W4 x$ C| MCASP_PIN_ACLKX
5 Q  w! z1 ~4 J( a5 n. c| MCASP_PIN_AHCLKX& p7 C9 |8 O. B: J9 N! w
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; }1 {1 M3 I, }/ r
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & G& m( B% o2 d( I) h
| MCASP_TX_CLKFAIL & y$ h! Z  [( D; p+ O# g; ~
| MCASP_TX_SYNCERROR1 S/ ]% K% l, ], S3 z& j. B  O9 Y
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % r  l/ {0 ^; J* H3 T
| MCASP_RX_CLKFAIL
1 ~+ C; x( D4 i. z| MCASP_RX_SYNCERROR 8 A  |+ W0 q3 K0 Z. F! H( l
| MCASP_RX_OVERRUN);
1 t7 \( J3 g" G* }: u, D}
static void I2SDataTxRxActivate(void)7 ^2 \) y! A' P1 X6 x1 t
{
' n. E/ \5 q& q  K! J/* Start the clocks */
, }' p7 A' {. LMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
; `9 f2 i/ r! w/ |McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer *// F8 H9 K" y& ^; E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,' H! s# p' p/ x" b
EDMA3_TRIG_MODE_EVENT);
9 t) @6 b; T9 h& iEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& h1 \/ g9 z5 R& \) q/ P8 m/ OEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ I9 Z) C- _" f3 m1 V- e$ g- a- U  |McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 @4 g) w" ^$ z, mMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" h4 Y, k) l* X/ F" C1 Bwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; N  u) n; f1 o5 LMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);; H$ ~. n" E9 [; T% H1 F
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: C7 E, z( s  {4 V6 c+ K% u0 W2 f
}

# C1 {  Q( L3 m1 w8 N. G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ U1 L/ K2 ^! V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-18 16:38 , Processed in 0.041243 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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