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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10617|回复: 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,; `8 t; Q2 R7 R" s1 Z. `4 }
input mcasp_ahclkx,$ X! `! R/ t3 X  ?5 q; A3 b
input mcasp_aclkx,
; @' H5 Q- t1 J% B2 p0 F% @/ ainput axr0,
0 p0 J8 D7 @9 w1 F4 s! r% p& h3 N) a3 |
% H; {! v: v+ I; M% r  p) Koutput mcasp_afsr,! {* [) u( g# Z( a
output mcasp_ahclkr,6 E; `" }6 E1 E2 t+ b
output mcasp_aclkr,; {! G6 ^+ ?- @
output axr1,
1 D: O0 e# Y- M' e% m% t+ V
assign mcasp_afsr = mcasp_afsx;0 e/ h9 C9 _8 d
assign mcasp_aclkr = mcasp_aclkx;
( W( M/ O& H' k, N1 `assign mcasp_ahclkr = mcasp_ahclkx;
' l6 o$ s0 M. w: K. U2 n1 f. N' {assign axr1 = axr0;
" o# F/ _0 U, g

; D$ Z/ a  y: T) f6 R
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, l( B5 @. Y+ t( z. C/ T2 E! B
static void McASPI2SConfigure(void)
! ^2 B6 }3 f0 f& B) c9 I$ q) {% h{
. ?' @5 U. I' F7 Q+ t# y1 E. i2 e* qMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
9 v# M( s# K, w3 V$ [2 v: @8 rMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 f- A; q, o* t) r
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. K. _, F8 h! E9 m
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ K" c) S8 R  T0 N& s2 {7 H; [3 k
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- O) l& R% f# Y' xMCASP_RX_MODE_DMA);. O0 n+ o9 Z' U, b  i
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 N8 q& A0 \5 Y! Z; K* N; k3 [& UMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// ^/ W" V& S; I* y# _3 z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 C& j2 [6 l* \MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 A4 q9 V& ~+ G6 q1 bMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* S9 b/ e' d! |: E& W$ DMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
5 o+ `3 ~9 i4 T! H' L, UMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
! R3 T; L6 a! uMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); , j1 S/ ^# j& ]" y& P4 N7 j+ C( C" `
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( O& e% n4 P0 Y1 ^0 F( _
0x00, 0xFF);
/* configure the clock for transmitter */
3 C6 l$ d' a3 V3 Z) n( x4 p$ }! AMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# F0 y9 e5 ?6 z( z& b9 Q
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 A: w, K% ]; B, J. M% V2 _( S
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ g/ _; U# U8 R* {9 L- M0x00, 0xFF);
- {1 \6 k- w' R. d( H/ X$ Z' N' G1 o+ K5 [- f; N8 Z
/* Enable synchronization of RX and TX sections */
# b8 l* t1 ^' q' Y' N& P3 m/ MMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */* Z7 o" L9 D! t9 V7 M
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
( A$ f( n# t2 d1 g! y6 K( aMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*% _) m, `2 w# i
** Set the serializers, Currently only one serializer is set as
0 X! l% b$ L" \- {7 F( k** transmitter and one serializer as receiver.
6 h/ g2 V) C$ D/ w*/& B- N# J1 z  }/ M
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' K( t1 A* U# C8 hMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& X4 q) h  u3 |7 v) k/ y% e
** Configure the McASP pins
- e0 E$ C( G7 t2 a. p, m** Input - Frame Sync, Clock and Serializer Rx
7 i* l' z+ M2 r3 g** Output - Serializer Tx is connected to the input of the codec 5 A$ V( Z3 [7 I" E0 Q
*/: p% Y: L: B& S: J% X+ ~. R
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 Q# K8 b7 i6 R# z% TMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
  h( ]' O# P) k2 m5 IMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 M- |, u9 _1 x, ?
| MCASP_PIN_ACLKX
$ e( l: y- f/ C: B| MCASP_PIN_AHCLKX: ?" Z! ~& ^# v- R" Y/ T2 y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */7 F1 c9 H  O6 o  q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! `7 {% {; k3 O; j0 f
| MCASP_TX_CLKFAIL
! [% x1 S2 J( G; [6 @2 o' a| MCASP_TX_SYNCERROR; T% ^" {! c# T3 D+ _& I8 Z# T
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 5 R3 ]' G0 I% e( h6 a
| MCASP_RX_CLKFAIL
7 c! R# H- J! Z+ o; c! ?" t$ |: [! d  ~| MCASP_RX_SYNCERROR , K0 j! d( m+ M
| MCASP_RX_OVERRUN);
9 M8 L- r+ m; Z; @' d# w3 E}
static void I2SDataTxRxActivate(void)
" ]# u) j7 c# n* r* b) a{
+ z1 e( j4 o, \3 P/* Start the clocks */
0 I. S8 l/ o5 }/ QMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 N' T& }' f3 K/ y* p8 c. @% BMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
' Y3 Z/ J0 X; K4 `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% e: }, t7 R. \. r5 a1 O/ m2 @EDMA3_TRIG_MODE_EVENT);
% `9 I# H: W. x9 n$ bEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
8 P; B$ h) `& F% T. wEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
6 A  A) g2 m0 E9 D# w- G+ ^. pMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. I- C) _9 }+ ^6 w. a& d" j
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# G3 @, u# a: F5 r( kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ D7 ?7 R, T7 X8 f% k/ N
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' H4 F( ^! P! c" F
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);  d8 w  _! i8 Z7 a
}

3 l4 ]) @% u1 `! X
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
( g% D& b! o8 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-11 07:19 , Processed in 0.041561 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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