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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11955|回复: 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,
- N/ b9 _$ {- O+ Iinput mcasp_ahclkx,
* W, _3 U0 W6 D* U  H8 K6 j6 cinput mcasp_aclkx,
8 }  ]2 I; B% X+ R7 }4 n& l5 pinput axr0,* {% q. }) ?/ U
8 {& D# _; |5 c# g4 e
output mcasp_afsr,
' o) \# S8 |3 n7 t! z& uoutput mcasp_ahclkr,
+ w0 t5 X& l$ J5 a1 Doutput mcasp_aclkr,
5 d& d, D# \; L/ |3 ?output axr1,& d  u0 @2 q! W1 N2 M& f! \
assign mcasp_afsr = mcasp_afsx;
+ |/ w! d1 Z2 F  @9 l! Z# x6 hassign mcasp_aclkr = mcasp_aclkx;
0 Y& L* G: l3 ^6 q5 F6 K" Q/ m: t- massign mcasp_ahclkr = mcasp_ahclkx;
+ @0 Q5 |& R( X( passign axr1 = axr0;
! x+ o+ h8 C6 N! N* u7 y

' p0 w% i) i" ~3 B1 C" K1 c
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& F# {8 q2 W' [( Q! T
static void McASPI2SConfigure(void)
0 P" l) t; r* J( a6 F' g' n! y{
0 Y% p* [8 v# L' W% eMcASPRxReset(SOC_MCASP_0_CTRL_REGS);1 K- x2 P9 O- I, x& \, r- s
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* D! b4 q; q# j) t( k1 i$ n
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);/ }+ ~0 I6 `. n7 E' T: E" h
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */8 ]& L8 `( @* X; ]8 u
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  z& C4 M- Q7 y" IMCASP_RX_MODE_DMA);6 j1 `0 D2 V" V; t' S
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 ~6 {* H3 w% S0 O6 t( |, }MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 H* n6 M" l0 @: H( m
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 _9 ?% e' e" a! n% h) n
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 T$ T5 o- Z( X9 W, J( H' tMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 C2 M3 ]; @3 i0 E8 J* d( z& K
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# n% I0 d2 d, x- `
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 |* F; B+ A) a0 R' n1 B
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 1 r# E$ D! x" D* w" @) E) _* p5 w
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
5 a4 d. ~# g3 R( J: O: {+ k0x00, 0xFF);
/* configure the clock for transmitter */! L& v# k+ V1 c
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);3 \3 i; M  A7 _  L$ s/ n
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " S$ u" Y% i$ @
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% b6 g& k1 _7 g- t& U, ?* N0x00, 0xFF);
9 s( R: m# L, h" L1 J  d
; C2 x- P, E' d: g  m4 U/* Enable synchronization of RX and TX sections */ 2 w  _4 H, d- f# _: y4 J! U; X/ l
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
3 o4 |6 P* L- e/ NMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
( w# d! }: O% s+ P8 @( kMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
; V7 X8 U& y3 \** Set the serializers, Currently only one serializer is set as0 O5 M. _2 ]6 u  a7 E9 X
** transmitter and one serializer as receiver.' g# b5 `' m% P1 H; A
*/
/ q' x: |, ^2 fMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 [/ z2 w! P' Y' L6 OMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
. U  q% X  j  i; D** Configure the McASP pins . W) M* {# J5 m# A. T! P+ Q% Z4 y
** Input - Frame Sync, Clock and Serializer Rx: H. F9 f! \$ i  r
** Output - Serializer Tx is connected to the input of the codec
6 C& g0 E6 r, u8 ]% O" O*/
2 R: G" `$ V( A- @( C! j, a4 rMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 A% o  ~  @4 P/ U* I/ VMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! q, E9 C/ S: \6 ~9 n7 M+ ^- XMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ P$ E& V. _& O8 C1 F5 |) z3 \| MCASP_PIN_ACLKX/ ?. s& e/ d& U; y
| MCASP_PIN_AHCLKX
' r  Y  O) f1 b8 J) D* p. o| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
3 d" z# n# y  G7 f" z' SMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 1 a0 B8 N' w% q
| MCASP_TX_CLKFAIL 7 R' e1 W0 H; F7 _4 D5 o0 E* _0 y
| MCASP_TX_SYNCERROR
) E- |4 B* }4 J6 W5 I) S( || MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 S) H9 q2 K' A0 T. }; h/ r| MCASP_RX_CLKFAIL
; e& X4 v$ n( N| MCASP_RX_SYNCERROR
1 g! R$ g  C" s2 g3 l, z! z| MCASP_RX_OVERRUN);
: Q3 e" a! O) V6 s  Z}
static void I2SDataTxRxActivate(void)
( ~8 K/ I: r7 O1 o* w{
  K1 c$ d, b; V; a6 a! |4 R/* Start the clocks */, f9 e2 w) d4 ^) R
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);5 r' s. i+ C& A8 p& P; O
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 K: A) W0 B0 ^% a6 T! [EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 u  E$ b3 L) |- H: v! FEDMA3_TRIG_MODE_EVENT);
' f" R/ d7 w5 D' _9 S) j& LEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  \0 M5 E5 }8 x) u2 ]EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */+ Z" Z* W0 N  @5 |
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' W0 M' g3 I) w: [McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' |8 Y5 o: F- o1 R2 L  d
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */' @2 v% h9 ?, ]9 W9 a2 i1 s  }
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);% k4 k  i, y8 J) n# J
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);, V# n* |  \& P3 y+ L- q0 @# F6 F
}
' J" Y4 u. M  Z+ I$ l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
& u3 t% q, [/ @7 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-22 00:16 , Processed in 0.040696 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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