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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10127|回复: 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,
" F, u0 S5 p  v/ t4 Z# h' j1 ainput mcasp_ahclkx,
8 S% P" `) x1 h# I2 s0 |- sinput mcasp_aclkx,
4 J- \1 w- I$ i7 W9 R) ^) dinput axr0,6 l9 T% t, q2 z9 ?! Y% b5 y

9 J5 c- @& Q% poutput mcasp_afsr,
# C0 @# e" @$ x; s8 \output mcasp_ahclkr,2 v. g# L. x% d8 i
output mcasp_aclkr,
0 _( b* s, n5 ^+ |# ooutput axr1,
5 e1 T( D/ a* |6 ]8 t
assign mcasp_afsr = mcasp_afsx;! I1 ~: j% R2 L
assign mcasp_aclkr = mcasp_aclkx;" W3 {; H7 M" y2 o
assign mcasp_ahclkr = mcasp_ahclkx;
) G5 U' o  }% E" u* r' Z6 t2 nassign axr1 = axr0;

6 w" p$ z# r" M" Z+ K9 d8 w- d8 j3 w7 A, S; c& |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# I; b1 r, |3 I4 d7 f* Q  B- h
static void McASPI2SConfigure(void)
9 I4 C! o, i! j( t" o$ ]$ m$ [' i- J{
  t. N- ?6 t+ l3 BMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
3 S, O1 q$ C# L  ]( vMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */% o/ }9 D5 Z" `! a/ n
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: }, @* a9 @& j$ K4 N5 X
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
" z# k" ~3 q# v# H2 `# GMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 D. I6 n+ @. k0 {; }
MCASP_RX_MODE_DMA);
  J  i, g* t4 T; x: n2 n2 g+ TMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" Y! r% t  r/ d6 pMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* ^  A3 `" H" }' I) b
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, % k7 a: w: W. [
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
% F) z5 B  k4 c3 RMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 6 p1 ?6 Y" k7 o& o
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ X  H  v# X' S
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 c4 w2 a6 j- H0 j& YMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 [. O% u- \% _* t% X" M2 x; g6 Y2 k0 x
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,7 d8 r. E8 F$ ^) E" m
0x00, 0xFF);
/* configure the clock for transmitter */4 M! ~( i, R( T; A( Z4 y& |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
* h8 P8 _! ~! ?McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 A4 x% j: r1 O9 r+ ]! C/ ~McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
- k( [3 @5 J  @; a+ u) h1 M+ i0x00, 0xFF);
- @% m: G' i9 T; X7 B' S0 e7 E# ?' [+ h/ d. K2 k# w: ]
/* Enable synchronization of RX and TX sections */
  x; q5 F4 l# A7 Q! xMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& v$ y7 J/ U' r0 m/ W6 j
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" j) U! c1 i3 O8 U- U
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( S+ f" q  b; }& D* n) Y
** Set the serializers, Currently only one serializer is set as
3 h  c& v% G$ V5 N( c& w** transmitter and one serializer as receiver.2 \" _& D9 b' w" V
*/
  ?* r/ {! m  v" {: q- B6 c# N: PMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 I" z" Q. g+ D9 TMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
% q7 e) J  h7 a# e** Configure the McASP pins
& Y1 y) B9 d+ v2 Q. B$ l** Input - Frame Sync, Clock and Serializer Rx
; y; }1 M* ^- p** Output - Serializer Tx is connected to the input of the codec
+ q9 ~- K! y" |*/
% k- |/ j- p4 O- X& |/ H3 |McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
% i5 V' N: H; MMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ H' j! D: b; {) M, W' Q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
8 C+ c$ E  j7 {% W, r$ g4 t& ^| MCASP_PIN_ACLKX
2 v) Y# f: p0 l% d( p6 e| MCASP_PIN_AHCLKX
  z. _. j* Z8 ~3 \. ~1 S| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ w! O% A7 U( S1 X
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. R$ U7 h8 `: @7 l( o  Q( B| MCASP_TX_CLKFAIL
. \( ^2 }! }/ k; a. w7 g+ Q| MCASP_TX_SYNCERROR
8 C* I& L/ Y/ b. a| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
% [6 Y. D: B3 [6 L$ b0 R7 C' S| MCASP_RX_CLKFAIL
, B3 r) ^$ I  M, o- V4 V/ N4 z" M| MCASP_RX_SYNCERROR
* h  ~" }  {% f) w9 \4 a| MCASP_RX_OVERRUN);
+ g+ Z( F1 U$ o4 J}
static void I2SDataTxRxActivate(void)/ D6 \# g1 @4 `7 l' P$ [
{
6 ~. a# t; v8 P, |/* Start the clocks */
8 M/ D- p8 P: \  a, zMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ S0 U- i  }+ h# k5 zMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" Q- g! [. @& U2 qEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,6 W2 _7 O4 f+ d" g) k0 M' n
EDMA3_TRIG_MODE_EVENT);
- q& S+ N6 x* qEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 Z1 R8 U& x- bEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' P  T- n+ C# N/ n7 h5 k- M
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);; ?+ Y; L/ h& C7 y8 m0 d
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  t; V6 `5 M( n/ B, T9 ]- s9 iwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
+ Z: |( A. r# u/ b$ L! O+ A1 `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);+ @% B+ u9 f& n  k# N5 I
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
8 ]: x( d7 E' P- y$ {7 J7 x}
1 b  ~/ |- Q! ^( \% j( K: L) b. U, Y; Y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! o" d% i& `  s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 15:47 , Processed in 0.042782 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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