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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8597|回复: 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,5 h( ~) k% x' W( D, [
input mcasp_ahclkx,
7 p% ^; a7 Y! u3 n. s6 `0 o: R8 o1 ~input mcasp_aclkx,# s" H2 N1 M+ J
input axr0,! [2 `8 H& o  p% x
* d* \" L" w' G/ N
output mcasp_afsr,8 _* O! a  m# t
output mcasp_ahclkr,( h4 J0 p2 A: f7 S) v0 e1 H+ G
output mcasp_aclkr,) d3 e& I  [, C- A( {
output axr1,
$ P! U' v9 l+ K1 R- u0 S
assign mcasp_afsr = mcasp_afsx;
6 `( T; G( v! G+ u2 K$ tassign mcasp_aclkr = mcasp_aclkx;* i6 J% Z, }. t2 ]3 W- ?
assign mcasp_ahclkr = mcasp_ahclkx;1 a1 T7 I4 ?" C7 O0 `  s; [
assign axr1 = axr0;
! S0 e7 z; M( N8 Y* x4 {0 A% D
+ e" l$ ?1 l+ t7 n: k0 d; s$ T
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 _: |: Y+ }% g. V
static void McASPI2SConfigure(void)
+ l- i9 N( q% `5 z7 e{
0 v% p( J# H* J+ K7 U4 e+ M7 aMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
% A3 A" x: U' A. W( Y7 m/ ^McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */1 O6 `8 g4 B  J# `. o8 \
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 p- x# ^( q, q4 \, v6 \McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; d# I1 e' h( o, C7 aMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ k" l( h  v0 P9 Z, I
MCASP_RX_MODE_DMA);2 b7 P3 H6 O# Z$ E: V1 @9 R, Q$ r) o
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 l7 m( q1 F' ^' y- X. ?( [
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! b6 D* L2 k* G1 ~3 U  m: p: o4 ?
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 R+ n% H' O. V4 TMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" ]3 n% G" W: EMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" {4 H$ q4 z2 q! i1 g* r$ MMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ M) p; r( M) `( x
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( Z* B) y1 D" r; k- V
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 1 O* F  R4 C! s8 n/ p/ Y; q3 w
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ Q1 M  Z3 y/ E( K
0x00, 0xFF);
/* configure the clock for transmitter */
& s) X# f& v2 ~" rMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);8 R5 @& g! j& w* }* M. L2 C7 s
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: I0 g9 ], \' {* p# SMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
" P; W2 i0 j8 a0x00, 0xFF);+ D7 u  A! e' H: g& g& c
0 ?9 g: m6 B. }, A" F: ^, m8 R5 \
/* Enable synchronization of RX and TX sections */
/ s8 V" h, O) m( [2 [McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ \3 g9 j9 A1 O2 G* C, f3 @
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  v1 Y5 @8 z( [& G; f2 EMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 [& C6 x8 U$ e4 k4 C& R  M: _** Set the serializers, Currently only one serializer is set as. ^; q$ j1 l+ M) N# q
** transmitter and one serializer as receiver.$ E7 i7 Y6 i. {: h
*/  I2 ?0 t  R! ^: G' t0 Q' h4 M
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
+ T5 u( C% X. eMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 k& `1 t6 E7 z% L
** Configure the McASP pins
3 w# h7 {! g4 l8 [8 }# M: w** Input - Frame Sync, Clock and Serializer Rx8 Y( j+ s9 B; L0 m: T/ s& K
** Output - Serializer Tx is connected to the input of the codec 0 J: C7 \. X' D3 I
*/
2 a! P$ M3 I" k' IMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);! o! @) k/ T4 B) C  m/ p
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ i( ~0 d, E" b( T; R0 d8 T
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& w1 k) `# @2 `, U8 |
| MCASP_PIN_ACLKX
# u/ O# w4 o+ A0 y0 y| MCASP_PIN_AHCLKX. s. p( _! k8 O; b- B7 ]. v
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  d( y& v- h. c, m. h# q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 Y$ D0 H# w" l  X  ^| MCASP_TX_CLKFAIL 4 q* z5 E& _6 Q, b1 r& O5 r4 V0 S
| MCASP_TX_SYNCERROR
- P- {0 m  ^. X# @& x| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ i9 _) Q3 g# m* F- D| MCASP_RX_CLKFAIL
, Q: i5 W( n6 |) Q6 d2 Y| MCASP_RX_SYNCERROR
3 X: B4 L, V2 V3 K8 I) [| MCASP_RX_OVERRUN);% U; ]; F9 }& W& i& {/ _& u; T
}
static void I2SDataTxRxActivate(void)
6 E. q* i; o9 `: Q2 |& T{+ x! R3 _) P: [' K3 g
/* Start the clocks */6 C7 {- j! i8 H+ y8 R( I
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);+ g: @3 }, e& f2 B2 y( n) \  F8 G- ]
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
' ~- x( j: E3 l: h5 iEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 o( d" x) k& K" ~
EDMA3_TRIG_MODE_EVENT);
3 P5 q0 D0 I$ R* z0 x) JEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
, r9 K. C0 `0 c' ?EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */8 o" {8 y7 D7 T; R. J, X+ p
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' V/ }4 _$ q5 }  C" K- g& XMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */6 d" M/ E1 X* t# D$ ?1 N$ f
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* g' i& A( y& w( s. b% VMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 m' \7 r: I% X8 U! b" d- s3 zMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);  R9 W! [9 _! _, f0 f4 E4 H
}

: s/ {8 n; a' `7 [
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# E3 \/ S+ f% e2 p, C, r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-28 11:32 , Processed in 0.039568 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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