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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13376|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,8 U6 J+ {; e! X  K) L5 P' }7 y* b
input mcasp_ahclkx,
. M6 `) @0 [# einput mcasp_aclkx,# P3 v1 k* ^* [+ G
input axr0,/ y$ ^/ v" ?8 ]
* S0 V- v" U5 u* G8 [
output mcasp_afsr,2 Z! M1 |# n; {: w2 D7 O+ t0 `
output mcasp_ahclkr,/ Z$ N- h6 M5 [
output mcasp_aclkr,. R  h- i/ x. x' ~# A- v
output axr1,) y9 a* q" ?! \
assign mcasp_afsr = mcasp_afsx;; Q2 D, |$ P% ?+ Q$ ]
assign mcasp_aclkr = mcasp_aclkx;
! d" H6 ^8 a3 Dassign mcasp_ahclkr = mcasp_ahclkx;
: {: b3 T0 {3 j# T( qassign axr1 = axr0;
) V: {! M7 Y1 |1 f, M
& p" _/ z0 L2 M  ^; m; b# y" H: h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 J9 e+ w2 h" v. O: b; l
static void McASPI2SConfigure(void). y, x/ h5 X; c2 u3 g  E
{
. g. U  z) a9 ]7 }McASPRxReset(SOC_MCASP_0_CTRL_REGS);
) k; G& ?7 `; Y+ GMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 \& }; {1 g' r5 S
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% L- W% C, O7 e) h6 n; MMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: `, k" d! |, i8 I+ }0 `
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 i& a2 F' ~4 OMCASP_RX_MODE_DMA);
0 B* H  r- S; ]7 cMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 D' Y+ g2 O' d# k
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
& u) X1 M% F7 r) B' O- }McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 B* a, c$ J: A1 @; p) ^& d
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 m9 ~1 v& V2 m+ E3 S: R. U5 KMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, % z- _+ |3 [2 P; s7 ?
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; g! ]$ W( {6 N3 d  }! j8 J6 hMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) a* k+ w, g3 o( M" ~8 aMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
8 ~0 L8 e0 b! S- ?# T3 tMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ h' `- e/ _6 R" Z: ?& D" C8 q% o' N
0x00, 0xFF);
/* configure the clock for transmitter */
+ M. z8 C% p# j# J% G6 y! G" n7 C; PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);7 J+ N4 U4 Q/ q9 V/ T  |
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % N1 Q/ N8 N+ V5 x* Y; m/ P
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,; F) F1 |5 |: h# e: n9 M
0x00, 0xFF);" j+ P( K3 ^$ S& b( T* F
; f( q( @* i4 F5 O$ T% Q; m- `
/* Enable synchronization of RX and TX sections */ 3 v* {( _8 w$ t% h4 {) L7 ?& }% N
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
; ^: S' K- \# i" nMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. c2 u! g8 d6 p+ Y% ]McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. e; @- b4 \/ Y5 g( |9 _( y
** Set the serializers, Currently only one serializer is set as
* R6 A/ E$ I7 |: ]( i: |** transmitter and one serializer as receiver.  q2 a1 W4 n9 I3 U
*/
! F' t* t! S4 tMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 ~/ m9 A6 }- ^0 ]. v/ w" w: uMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! W& [, Q3 s- S* @3 [** Configure the McASP pins 0 v6 ^* c0 N$ \5 t
** Input - Frame Sync, Clock and Serializer Rx
( R* \. N" w1 p# E; B** Output - Serializer Tx is connected to the input of the codec
# ?) [! v% F' \1 }3 \*/! J8 q' ^/ \* \9 l/ k% a
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 a9 Q. B% m' Q, N4 R
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* ]- G4 Q0 V! t- A3 k0 k8 MMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ h9 y' J6 S% x7 M( L| MCASP_PIN_ACLKX( I6 ~6 t1 h; X0 c9 u1 s
| MCASP_PIN_AHCLKX
" z) O4 a4 W3 A7 S. C) r| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
5 f& D* M8 J" p* W" DMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 Z- Y2 _- |- x
| MCASP_TX_CLKFAIL
, r. M# L0 {, i0 R| MCASP_TX_SYNCERROR
: ?2 g6 L  b: D| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % A/ ^$ q) m8 N( ^/ R  V( V9 Y5 _
| MCASP_RX_CLKFAIL  Q% F  p  r" }2 B
| MCASP_RX_SYNCERROR
6 s2 Q; }, m. F: ~5 |: u- k! {# T7 A| MCASP_RX_OVERRUN);
7 r) Z+ I& }: u/ G9 b, O4 \}
static void I2SDataTxRxActivate(void)  Z, {$ z# [& n" m
{
- l- D! B& V; s+ B/* Start the clocks */% y2 `! k5 x7 e# l! a& @- n
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 e4 a; m# F  U/ U+ X2 ?6 b# j* k
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */# V3 o% ^9 P( @4 _- \# F
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,6 G& J& t3 z# F: f9 y: x# l1 B
EDMA3_TRIG_MODE_EVENT);; R) M) K' p  `6 V. I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ; X: g$ H0 n/ C( ]- U/ |) k' E/ T- S
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, b- N4 f' D, Y& b( r) }
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% m0 x+ R# D6 F4 i) h. f. H
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) q7 `! M3 M2 swhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 \5 H4 I5 [, J5 G/ J; c7 a
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
9 {" r8 h: c0 x' `McASPTxEnable(SOC_MCASP_0_CTRL_REGS);' G7 s2 r0 h+ w9 c2 m) P
}
/ r$ J5 U5 x1 \  F2 e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
* D  u- ]9 ^6 s* g7 d" x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-10 23:05 , Processed in 0.042025 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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