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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9060|回复: 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,% E" U1 l+ m  b9 M4 B6 x' p9 M
input mcasp_ahclkx,
1 b5 A: |! O' W" s6 N- q0 dinput mcasp_aclkx,
4 O8 V1 B% \- t. O3 winput axr0,0 H  Q) ~& ?# P5 R( m& ]7 L
. x9 z4 ^( i; }
output mcasp_afsr,
+ E, J2 x- ^6 Z) Ooutput mcasp_ahclkr,# `+ r' G% Y; [5 X9 U
output mcasp_aclkr,5 p- \6 {! U, i' f( Q/ S
output axr1,2 m& v& x  k" z+ {; `# F
assign mcasp_afsr = mcasp_afsx;5 Q8 ]- b. q, H% A8 L) k" s2 ~
assign mcasp_aclkr = mcasp_aclkx;3 @: P7 T6 L; {# ?& l. e
assign mcasp_ahclkr = mcasp_ahclkx;# Y' g1 \* N% v
assign axr1 = axr0;

9 z8 `7 G4 H+ b0 b9 r& q  W
* ]$ E+ k$ M6 M2 I$ c3 D
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 {% a" z6 t9 s$ b
static void McASPI2SConfigure(void)/ V- J$ s$ X+ |# ~9 a' R' l
{
2 ~% F1 g3 |! P9 E5 Z! b$ qMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# k) b5 P8 J2 Z) C, n3 DMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ a" R( e/ n& ~9 u: pMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. }* Z5 n8 h. `5 r
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
4 u6 n8 L. d$ xMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# C" U8 F" s3 e, C( t/ ~MCASP_RX_MODE_DMA);* C( Q8 ?. V! m6 a+ d7 g6 p
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 c' m7 b+ K) U  [- d% F/ n
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */  b$ Q7 e0 f% l
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 9 N' y1 Y0 l# z
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);6 C: J" N, H5 |
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,   K$ T+ ?# ^  a* o6 C) ~
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
- F0 H- Z. Z  E& u# X# f0 FMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);/ d4 k- t7 |! H8 b
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
/ c4 b7 `6 X6 F+ D6 nMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% u; Y: l- }0 P+ M
0x00, 0xFF);
/* configure the clock for transmitter */4 H; c- q9 o, ]9 Y
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ I6 D3 {0 G8 c$ q* m
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 m, b1 L( s- @3 {# g8 P+ s  L
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  H( |# i% I, w2 ?
0x00, 0xFF);9 Y  g5 k$ |9 i8 W

* {9 j2 I# f' k* T/* Enable synchronization of RX and TX sections */
# s& p4 j6 B  V! u7 {) IMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
2 O+ \: \$ c5 B, {( _. n3 Y- HMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
0 R+ c# T2 A$ |# \& X. \McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 y7 e! S1 K  z* k4 O) I# ^7 v** Set the serializers, Currently only one serializer is set as6 a0 P) T8 F, o2 `2 N' }( o7 w
** transmitter and one serializer as receiver.% _4 ?/ N1 V( h+ p5 X8 c
*/
9 V# P8 ?9 D, @( d& J' n5 jMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' C1 _. Z4 y( b* p9 T; C, N; Q/ AMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ s( i6 t0 W& F& [  T
** Configure the McASP pins
  o0 t- S' V$ L/ @7 M# m; B** Input - Frame Sync, Clock and Serializer Rx. l9 j1 j* z7 y% Y9 k; ~
** Output - Serializer Tx is connected to the input of the codec
& g) p# G9 B3 v( a: q5 d*/( a. R0 s; z" Z+ ?
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# [# c  i" I; A9 WMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
4 K7 P3 z6 S% \2 v; Y3 JMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) T: e; p; v1 `
| MCASP_PIN_ACLKX0 k; d0 M) V, ]
| MCASP_PIN_AHCLKX0 w8 T" g* }' i% V
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */! T& L5 Q3 a9 G) e* t2 ^# F
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. h+ c* x: @' c: ]) ~3 K% L| MCASP_TX_CLKFAIL 6 B3 w6 ?- F- V6 _/ G
| MCASP_TX_SYNCERROR. H- U$ r+ u! O0 R
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
0 Y! d4 U2 j8 F  F( Y+ V  n| MCASP_RX_CLKFAIL
' L+ }9 q+ F8 p) ]- t| MCASP_RX_SYNCERROR
, w4 Z7 K0 T  l: `| MCASP_RX_OVERRUN);  @. T  ]8 S+ [2 b1 {9 E4 J, W) x
}
static void I2SDataTxRxActivate(void)
* \. E4 l- C3 P- D* p) s{
( a, j8 [, L! Y8 `- W$ U/* Start the clocks */
/ e9 o  P4 `, ^5 BMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
& f+ ?, W+ w* j0 \$ m0 [  u2 }McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 M; W+ S1 B  b5 B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,' m: v$ P* x$ E; L9 n6 D
EDMA3_TRIG_MODE_EVENT);) l  g2 G; W  u9 j/ i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
$ g- l& X2 |: Q8 K! Y, {EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' M( k6 q0 N- O
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- M, ?  ^$ c0 [, \( |, n8 q$ }
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
! W9 B3 o- m) vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# f' x3 `( ~6 h3 R6 \- L9 rMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);. x/ _. ^( e# Y( X  N$ {' S$ J
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);% R( z# x0 s  q6 t4 Q' Q
}

9 j- |+ P" f* a  A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

+ K) E4 c& C9 V+ x+ K9 e8 W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-15 16:28 , Processed in 0.038994 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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