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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11944|回复: 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,+ X! W0 E  T/ u
input mcasp_ahclkx,6 c# p# @, Y/ c/ \9 ^
input mcasp_aclkx,- _5 R9 [9 h9 @( S" x; _' @
input axr0,
5 r0 p* e, E, m+ z5 o* A6 q, A; n% d- b6 l9 @0 r
output mcasp_afsr,
+ I9 X, {- {. [! qoutput mcasp_ahclkr,
1 W2 u& D# ^6 r/ M; O  Uoutput mcasp_aclkr,. W  g+ a7 q6 ]) O. y; V- l
output axr1,. ?7 H* Z+ |7 l) N
assign mcasp_afsr = mcasp_afsx;
2 H  c5 B  ?: C4 L" c- Xassign mcasp_aclkr = mcasp_aclkx;0 X, c( {7 [0 g! l1 Z( k
assign mcasp_ahclkr = mcasp_ahclkx;2 J3 O# B, _6 o5 ^. I
assign axr1 = axr0;
' K! V  _' q5 j9 ~
; B% a8 Y% \  u: M; U5 x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
" C- y! l  h6 q7 N; n
static void McASPI2SConfigure(void): D- g* w6 }- S6 Q6 {% b% C' t
{
" _8 l7 a5 ?* W- O7 Y0 @McASPRxReset(SOC_MCASP_0_CTRL_REGS);" }6 o/ `$ C8 m' }' k1 o
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
! `! r5 p* F2 s1 m: }$ M1 X' o3 ]McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);% j$ [* B- m- c2 N/ @
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
2 B' I: \  x8 a& D0 _McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# [# d8 j5 \& d7 p" w
MCASP_RX_MODE_DMA);
+ m- Y, n2 T) M) TMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. J" `6 X! C% S  ?4 W8 b5 L
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ s' Q6 I; J0 a5 f7 Q. k. c
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
9 N6 `9 \; X3 _3 `& Y( eMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
' _4 n2 y$ N5 z' t, |! xMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, - G0 L2 c7 Q3 W7 K. Z( E/ k2 F
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */" R# [8 C* q0 K+ |2 [3 }
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( E4 q/ k2 z$ }8 E' f* `" N5 D3 ~: y
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); - n; C" W- L& o& T$ Y6 x
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, Q; L  q& |2 o4 L
0x00, 0xFF);
/* configure the clock for transmitter */: Y/ v) s  Y3 ~, t! q* @. W
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. f0 n( C$ @7 x, [McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
# w4 I' N% c4 W  A, r5 Z, P+ J" aMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 ~. p- e0 l3 r
0x00, 0xFF);
& j4 u2 {! E' T( T4 @( o8 \
. t( w. t& {4 q8 w/* Enable synchronization of RX and TX sections */ 4 ]( P3 ?: ^9 J
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 t# _3 P- i* t# v" L, N  D# uMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);& s9 C; g& t6 G$ k
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! f* ]4 J1 }: Y** Set the serializers, Currently only one serializer is set as
2 a) y  c5 H0 E** transmitter and one serializer as receiver.) W+ v9 }( l# l9 }  n9 B
*/
# S% H/ h3 B  I' MMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);; }9 Y/ Z1 z- T; p
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, E5 i) ]0 q- |: l! f* {
** Configure the McASP pins ; ?$ T/ @8 F; g9 A' W9 l
** Input - Frame Sync, Clock and Serializer Rx' V1 H- L% o0 F5 |9 Z! I
** Output - Serializer Tx is connected to the input of the codec
4 k$ P" A: J8 }, C3 R*/
! p' Y0 W8 l5 W* E  AMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) g( M) k  m2 y/ j+ b
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 ]# \4 ~# Y, Y4 i" m0 n
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
/ Y% t, G1 f! ^6 D/ p| MCASP_PIN_ACLKX- T) ^2 _% m; X$ |2 z$ z' L
| MCASP_PIN_AHCLKX  o# D: n. j0 D
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  I% B* _# C, z6 RMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 y0 j1 [7 Q. V
| MCASP_TX_CLKFAIL ' U: v/ Z* S' k; I* o# r8 K8 F5 Z
| MCASP_TX_SYNCERROR
  u0 U6 J/ Z. V4 s( P| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " V% z& _% M. R2 K
| MCASP_RX_CLKFAIL7 Y* ?& N/ Q8 n+ r4 Y( w
| MCASP_RX_SYNCERROR
6 B- ]2 t' K. {  D) \( X3 }) ]2 S1 ]| MCASP_RX_OVERRUN);
% Q3 |: m3 \" Q) V! i}
static void I2SDataTxRxActivate(void)$ `  ?/ I  t' \7 t, `# P
{
% J  n( E$ Q5 t- z# }. g9 m( G: M/* Start the clocks */) K  s5 a* Z# E
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);  a/ O* p! ?7 D! q7 R
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! n& l! V# b5 F& hEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 g  ?; b8 h- u# I" a. c
EDMA3_TRIG_MODE_EVENT);% {8 u. U! C1 P% s, c! w: G, y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) s5 o, V% h) W+ a& z/ `
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */* ?" @* a! n4 t  J: |3 u
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
& f) u4 C, `! S" v) P# v' Z4 xMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */2 Z) T7 h. `. t; k" r( V
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' g5 w6 J1 F1 w: _. [9 h9 k% t2 jMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ q" j' ^* P$ \  N1 l/ i. T
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
, R5 \( y2 u; W- V}
  a6 w  M% r' U3 o) M/ h
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# w1 ]) Z5 x3 _+ l; D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-21 15:55 , Processed in 0.040794 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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