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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13301|回复: 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,7 q, B. L7 [6 q
input mcasp_ahclkx,
* W0 B, @- K. K. T- f, Pinput mcasp_aclkx,6 V! j9 j0 a4 G/ s
input axr0,4 r! ?. A4 ~6 {" V# J& e; H
. R3 c6 G; D: i4 G
output mcasp_afsr,. P  R" i- I0 P7 N' n  G( B
output mcasp_ahclkr,* o; F& j$ D5 @
output mcasp_aclkr,! q2 B2 U' ~  a, D8 v3 O$ `
output axr1,
( i, `; z& J, l) U" t2 H
assign mcasp_afsr = mcasp_afsx;
3 V/ ~5 h9 C: j, F. E  J. s. Kassign mcasp_aclkr = mcasp_aclkx;
) I9 q- N% F' ?# E9 U- Jassign mcasp_ahclkr = mcasp_ahclkx;
: P1 ^0 X3 u6 _assign axr1 = axr0;
% i) u' s+ M1 ]$ h

& c4 Z) d$ r7 A" ]' @
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
! v5 @8 ~9 q$ w0 Q) {
static void McASPI2SConfigure(void)
& O4 `( g  ?0 V{
4 {3 Q$ _, b# w; A2 XMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
5 c: r  o  B1 I4 R: l$ Z1 @McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' ]& h3 W3 e9 T$ ]* M/ i& F1 ~
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
5 P5 L9 O- ^% e, EMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 v  k- b' i; E* N
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 P0 ?; T) c# G: d4 m3 w
MCASP_RX_MODE_DMA);
) v( O! V( w' q. P' |6 dMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 y8 ~  z$ A. J& {MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* c9 ]- X% ^9 B% [) jMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; {8 ~% I. d* i9 r/ V0 {: ?; o+ oMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);7 c" F$ j6 o) M- z2 T3 z8 r
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 ]8 o0 o: |3 X9 h' o5 S- {# R, N: p
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% D0 |, @, P) B. F' d1 F
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 `2 H+ D% C4 N% c# u8 E5 ~McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 f1 g# n1 o5 q# H  a- N/ k
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
2 x# U4 ?! S: ?5 z0x00, 0xFF);
/* configure the clock for transmitter */
3 b/ c/ ^( q! H  G: hMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. k* h1 }6 Z, d) g
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); $ J+ O3 m: `- S% F! _: ]* Q
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,: F: n0 ]8 T* K- w
0x00, 0xFF);) C4 E! b6 ^# S  M: m& G9 f# h8 g

+ T: {+ [3 B% W! h1 I, M/* Enable synchronization of RX and TX sections */
7 D( X. _. V/ Z/ N# ]( eMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 H, }1 @& i7 U. H& ~$ q1 U
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);( n# E1 f) S4 |! G
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
8 D$ u. h  ^7 u) M; O) w( O6 i** Set the serializers, Currently only one serializer is set as1 F8 `& s6 Q- S# l! P' r
** transmitter and one serializer as receiver.5 q! I& L8 u. O6 |9 N$ b
*/
# C$ L, N8 {0 h2 n4 n* H5 ]McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
1 e1 x7 ~/ t  n: EMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*6 i4 X( P/ M- d- [2 t1 K% U+ f7 o
** Configure the McASP pins ( m6 r5 W$ E4 S4 X
** Input - Frame Sync, Clock and Serializer Rx
+ }' [, y- R* j& `( n** Output - Serializer Tx is connected to the input of the codec
. ]/ l' J/ v/ J+ y, t) t5 d*/( F, @3 U" P' S8 ^* ^  w
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* N! |: n0 f8 y( ^
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
( ?% i( Z/ }- ^* ^McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX# F. X' _+ j) a  g5 n
| MCASP_PIN_ACLKX
, y, o- F% c  A; p| MCASP_PIN_AHCLKX5 M6 k# l( S, |" G/ h) s) g
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 v1 X1 j/ [! R) {: n1 s& u& gMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR + `5 [$ m# `' ~3 v* s, q
| MCASP_TX_CLKFAIL 4 i0 u; s9 ?* M( X+ `
| MCASP_TX_SYNCERROR3 I7 f. G" u) C7 d7 h
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 1 v2 R3 n) V. V" ]6 S# ]) {' }
| MCASP_RX_CLKFAIL
# m* r  j- V3 r" U% _| MCASP_RX_SYNCERROR $ T- a6 V& M8 _4 l' H* o9 q
| MCASP_RX_OVERRUN);
& v1 c4 j/ U4 W7 _% S$ t}
static void I2SDataTxRxActivate(void), M+ e( L+ f4 T1 Y  w8 C, W
{
5 f7 ?* a7 y% e! A/* Start the clocks */; I  T, W* f* c$ E' ?4 S% N
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);6 t+ _% u5 U, \4 H3 K7 A; d
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 k' c+ C7 y9 l# KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 \8 b: z! H. i% m
EDMA3_TRIG_MODE_EVENT);
( s& J7 t! s8 n$ }5 wEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / @/ O) Y% ?8 G+ ]% u+ s8 B
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 ?) A: a3 ^3 G6 ]
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; X$ A6 o( r. _9 _3 }McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ {* O" w8 |3 n8 G1 E. U8 Gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 y0 a- t+ B) \2 k. e
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) l5 B" y8 q0 L- s% TMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. g6 X" O* C5 ?) V  n, P- b}
* c" B5 D6 W, x' O* e6 w
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

, ?4 }# ^3 i6 y6 ^: S; ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-28 14:02 , Processed in 0.054580 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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