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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13460|回复: 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,2 h* c  L, H0 _8 d" e
input mcasp_ahclkx,: G2 q" x* X  s" {. X8 S
input mcasp_aclkx,/ X9 h: K) n& ?9 `
input axr0,
" j9 e. [8 {$ {! e5 j! O; ~9 H5 S0 f. f; D8 R
output mcasp_afsr,) v! S( t+ ]2 E6 }; W( w
output mcasp_ahclkr,
* l$ q, t5 l/ O$ b- ~/ qoutput mcasp_aclkr,2 ]& Q7 r7 \8 w+ U
output axr1,* M5 a4 H9 R6 k9 F" W7 |
assign mcasp_afsr = mcasp_afsx;7 d9 f; }, n0 t2 n) ?3 u+ o
assign mcasp_aclkr = mcasp_aclkx;! }% D2 g( h0 v% t3 g
assign mcasp_ahclkr = mcasp_ahclkx;( L1 c% Q" o: l3 C1 ~- L9 |* b' P, l
assign axr1 = axr0;
& y2 }# P8 C) V4 m; L5 W

8 ?8 I- q' g/ c
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 \9 I( o) P* e4 q/ Q0 p
static void McASPI2SConfigure(void)' z* u  j( Y. c$ U. R+ M: S! W
{2 ~1 I; F+ s+ T- N# u$ m6 S
McASPRxReset(SOC_MCASP_0_CTRL_REGS);! @& q" M1 I' a" m  g: q. g
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 }  u3 T1 b8 {McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 `: N  v& b) N" Y) O$ g- _6 uMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */$ ~9 L* w. r, S5 `# B
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% s* }, l1 L+ a9 S% d$ j- ^1 \6 [
MCASP_RX_MODE_DMA);
, `1 X, G  v7 s3 a$ MMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 ]" L: ~* u/ X8 g$ g1 [
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */, V( r) T7 S9 T& h
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 {' |, z2 O- j: L3 y5 r/ [! ~" pMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
& j# n* `* d4 p$ L, q% @* D) xMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 4 G* g  Y6 j1 c% d7 N
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" H' |. y. N, z0 kMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& N0 B! @9 j; q7 p- |2 e  T
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # L9 \& Q/ ^  b9 E4 `- a; a
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,! n$ k4 ]: f6 }* B( b
0x00, 0xFF);
/* configure the clock for transmitter */
. a6 I9 H' H6 OMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ P( n; M  Y; z- gMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
# s8 S$ N% b3 M) B- ]! SMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
; c0 i3 H9 w; c. Y: a0x00, 0xFF);! p2 T) T" n& `
8 B1 E0 g# R( t: H$ C
/* Enable synchronization of RX and TX sections */
) Z/ O( N4 R! a" G/ q" uMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! ^/ m4 a& x  b8 n3 P- \/ lMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. Z0 ^1 u' Y3 t6 ], R# W( ?McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' j: ~+ o' t& {- l/ F3 }% a** Set the serializers, Currently only one serializer is set as  q. R) j" o5 \4 Y
** transmitter and one serializer as receiver.: L# v$ D  s9 }' x0 G
*/& e! _" V* t3 f/ [/ V
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
6 n! ~& N- n4 ~5 J, WMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( Y* h7 K5 Z! ?. h/ K+ j/ l** Configure the McASP pins . r$ V1 ^+ Z6 O5 N0 h# o8 E
** Input - Frame Sync, Clock and Serializer Rx
% d6 r% p' u7 Z) i  {8 h** Output - Serializer Tx is connected to the input of the codec
* X# E0 R5 C- q; t  `8 K1 A*/
- X7 w; m" d& |( lMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' Y6 ^! K2 ]8 ~2 o9 \
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, Y* x+ b4 I7 F% Q- [( Y% ]McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX5 r* i! U8 z2 `' d7 ~6 |
| MCASP_PIN_ACLKX
' }1 B( V" r7 V| MCASP_PIN_AHCLKX9 }, T( \2 D4 U: P
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( P0 S  l' n/ q: F1 d
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
  j) X* x- ~; ]. I| MCASP_TX_CLKFAIL + [0 f' c2 c2 O, o8 T% L
| MCASP_TX_SYNCERROR6 W& l% `) t1 @6 G  U
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . C% W2 c. [) ?1 ]# k/ G
| MCASP_RX_CLKFAIL
$ R& _2 g7 D  L3 v. A| MCASP_RX_SYNCERROR
6 N! P8 w% e( R, J2 p$ V| MCASP_RX_OVERRUN);
6 e4 K$ `7 {$ n7 a}
static void I2SDataTxRxActivate(void)! p  L1 M( l( y$ X
{3 r. R& f  {' u5 W! h
/* Start the clocks */
2 U2 D5 [- ?* R; [+ b3 I% [McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);/ ~$ G: F8 m4 t" ]/ O$ b
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 ~/ ~* y4 d8 X/ S: s5 P  yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; I5 `6 x! I' C2 D: m; XEDMA3_TRIG_MODE_EVENT);
! P! B* }: c" GEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * R0 t1 b) q- q. A
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' ~( f  y6 R) m- N9 E
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. K9 ?9 \2 H- e7 z
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 Q' i6 G1 j+ |2 U" f: S8 L
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ x! h9 E. W3 Y# ?McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 \( v; y, {  ?+ c
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);( g* Z  D: J% E, @# ^
}

9 ~# M0 U1 l5 c# I
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& W  H9 F3 ?' u# \1 t9 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-20 20:45 , Processed in 0.041103 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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