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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11356|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
3 R+ k" Q; l& f3 Yinput mcasp_ahclkx,6 A" g# P3 [' D
input mcasp_aclkx,
( q7 ^, V$ X( ~  kinput axr0,
, G8 n7 b' A1 X/ Z8 p( m
# t* }6 d( [6 A5 xoutput mcasp_afsr,
  w. z* A- L2 R1 p0 Eoutput mcasp_ahclkr,; t* e: ]! ^1 j; \5 W6 c
output mcasp_aclkr,0 d; [2 z7 o$ x
output axr1,, q# F: i8 a) W( I. {7 i: o- a  e
assign mcasp_afsr = mcasp_afsx;9 {4 p9 m: f! _$ ^! l
assign mcasp_aclkr = mcasp_aclkx;& ]0 x! }7 k& F) p$ V
assign mcasp_ahclkr = mcasp_ahclkx;
! u; Y4 y# i! g- o- uassign axr1 = axr0;

: V" s4 W! l1 j, M1 q- [9 o, v5 V- x, R. a
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

2 S7 L- g1 r2 e/ S3 a
static void McASPI2SConfigure(void)
) U. c1 [7 `' g( H" z4 V{
/ ?8 i# Y0 \3 Z5 R' WMcASPRxReset(SOC_MCASP_0_CTRL_REGS);7 ]0 Z  J: W  _6 C* @2 a& i2 ~& i
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' {8 A/ Q' J  U2 YMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);/ w. H* n# Q6 x+ k' c, D
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
8 p) p; O5 o9 }8 H( V! Q) u/ {McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 V8 Y& u7 J" R! V- ?
MCASP_RX_MODE_DMA);# u+ y! O: d0 r& K) W1 L& O
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 a. u' C+ F5 ~1 S* O' o9 O
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
8 p$ g& O# `9 \McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# M" L' y/ p0 e( p& C  SMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" ]( c$ P- W( r9 k9 z$ {5 D1 \McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
; U$ Y) b4 d1 C4 fMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
* F; n% ~. R3 Q- ^% h6 `McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
% {* C+ x9 z( w( w4 T' W7 x+ oMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
8 @8 R, l8 |$ g5 sMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 Z2 i; p2 Z. D) @. l
0x00, 0xFF);
/* configure the clock for transmitter */4 |" C+ E8 [6 n: B6 \
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# c$ j* O7 k* M/ T% d
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); $ x0 N1 y! Q% k, U
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 s8 ]. y% j" y  I$ D
0x00, 0xFF);: \7 i- z4 X: S/ i% q, l. }7 D, D
) o+ s9 H# t* o+ V( A, E
/* Enable synchronization of RX and TX sections */
' F+ m; U/ K) M; `% _( X6 {McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) A; H5 G$ u/ S& @- r8 ~9 h& P
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/ ]+ n% X/ v9 R2 QMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 j- Z  E: G0 m) F% i# m" r** Set the serializers, Currently only one serializer is set as* V+ X/ v" M+ `) f( P( o" _, x
** transmitter and one serializer as receiver.
' i* ]4 d: Z" B# w* l; R5 Y*/
* |3 Q6 Z& C1 {- s/ MMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);5 ^) A5 h+ m9 v3 Q$ _
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 F/ T( r; f- w" h. s
** Configure the McASP pins
0 L- Q% a8 q: w2 b** Input - Frame Sync, Clock and Serializer Rx
  \( e' H3 I; Q" k5 x** Output - Serializer Tx is connected to the input of the codec
; M# p- C$ _/ Z  l2 v*/
! q( B/ H7 C$ g0 U9 g' G* OMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
* u5 _3 {" e. k8 Q+ c! c0 `) M9 YMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, c4 I; p* F- H3 K6 g1 OMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& U3 `4 e( t# h* M$ w| MCASP_PIN_ACLKX/ T; _) t. H& P
| MCASP_PIN_AHCLKX
. m0 }5 l' ^' T8 O$ A2 m| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. k" z/ `7 p, m) _1 A% i8 f- @! [
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
9 @8 K+ `1 ?, H. N| MCASP_TX_CLKFAIL : t& n) h, S# p  U9 ^" {1 {6 U& {
| MCASP_TX_SYNCERROR
' D3 |+ I. o* Q& w9 Y! V% s  E| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 1 X7 W4 W+ Q% w$ j
| MCASP_RX_CLKFAIL6 X1 l( e2 M2 U; y: ?# n
| MCASP_RX_SYNCERROR
+ _7 n' `, ]8 D4 j| MCASP_RX_OVERRUN);& d( X- E. O9 `
}
static void I2SDataTxRxActivate(void)
4 k$ z# r" b- y0 v, {; Y{
; X" V) K% R- y3 ?5 W: i7 v/* Start the clocks */
. J3 |! o* y  t3 `4 z0 `* ]McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
: B% h( n8 [+ s! p  WMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
# H5 w3 y7 U2 Q7 H8 C' Y. dEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,- V  W5 y/ v- c% s1 V' |
EDMA3_TRIG_MODE_EVENT);) `: _. l% V/ Q/ m
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, % M5 o) L% \5 ?! A, M. ]. m; M
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
/ h% N; B  t/ d6 w0 \, s( L2 U( vMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
+ x* s1 G4 i5 j$ P8 DMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */  I; p3 X0 _* I, ]8 W! o
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 Y) ~5 o: q$ s8 h3 }+ }
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; p, W: ]% L9 m6 N; Q2 Z) ]McASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 M% i( z* _' N1 N
}
" p: v, o' A6 e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% ?* r: K; K! z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-3 04:54 , Processed in 0.044657 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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