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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,8 Y; R5 W. ~3 K0 C. T' ]9 [
input mcasp_ahclkx,# \# \3 B; J( z, c! l
input mcasp_aclkx,* ~0 q& g% J$ Z: v
input axr0,
6 }$ m; N1 f0 A7 K
3 C* }( z5 M6 z4 Loutput mcasp_afsr,8 G2 D/ O0 {6 `
output mcasp_ahclkr,' J: t* d2 y/ [
output mcasp_aclkr,
5 I  a1 V$ `# s% P4 i% poutput axr1,
/ [" H) H  b( X% p4 `% l8 |7 D
assign mcasp_afsr = mcasp_afsx;
9 c- _7 c4 [3 c# T8 wassign mcasp_aclkr = mcasp_aclkx;
6 Q: a) o4 Q) h* m6 J3 o/ W9 Y! Qassign mcasp_ahclkr = mcasp_ahclkx;! A7 b* r8 k" M0 M2 h
assign axr1 = axr0;

3 O; k  I; {& J: ?
+ r5 E! D! M/ q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
. {2 C7 ]4 x( }$ \7 l# m/ ^/ v
static void McASPI2SConfigure(void)5 Q1 |6 s% w0 [, i9 Z
{
9 i# F3 p% d" TMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
. A" ^% C# y# S: j) VMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: p, o' [- L* f# w$ x) |: T, Z  k/ QMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
$ g; n5 r# F9 J. E% rMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
2 k' |' V3 z6 @# b3 E, y" w0 cMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: _( W; Z/ O" H3 a( ~$ [/ Q
MCASP_RX_MODE_DMA);
( v8 N' [2 N  t4 W6 K. F0 c  u+ ZMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 O7 E/ m+ C1 a% }4 z
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
) n. {+ V8 r  X& b& G4 \McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; X; G, R9 p3 _! r5 e5 J
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);. F5 R$ ^1 z* s8 Z) f4 _( f' u
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, % Y+ D; \6 [: I; s
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */9 x& ?, S6 a0 }( q& i7 d' J, b
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ d2 N" c/ C$ t7 j3 J- _* x
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
$ n, o% S" N4 B2 w7 _# U7 \/ wMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% v: D' l7 B$ e7 ^/ w  B
0x00, 0xFF);
/* configure the clock for transmitter */$ S" v- B9 R+ Z8 ?+ A" {% f
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);9 ?  {+ A: F  i# J& O2 T9 @
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" m& L4 i1 S$ Q/ JMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
+ |3 _& H6 F2 f0x00, 0xFF);
1 ~. X0 I# V$ v& T2 b
8 T" n* }( Y# d6 Z3 v9 T6 [* O6 u/* Enable synchronization of RX and TX sections */
& z2 E( o* u% M% S, TMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 V* C- O9 A" p* H* {
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 S) z& d' b% [) b5 [' b
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
3 p- R* p- H  ]9 ^/ L** Set the serializers, Currently only one serializer is set as) f/ D, I+ v6 y( S- X
** transmitter and one serializer as receiver.
5 J; W( }! q7 V3 H% N1 ~6 r  J2 Y*/
$ i. W/ f( d% S, H, I( L' ?: ^McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 w1 D) c9 o+ V) o- E! e8 Y5 R6 U9 p1 D
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: a7 B: `2 ?3 l2 ?7 W6 K** Configure the McASP pins 1 g4 ]3 h+ F5 }# ^2 m' `
** Input - Frame Sync, Clock and Serializer Rx; A6 w+ _' d2 H
** Output - Serializer Tx is connected to the input of the codec - u3 p' f& d! u- I  i/ S
*/
+ z1 u* b- ?. L, r* mMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
7 H: N2 z  o8 T6 A+ NMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ ]$ i: p2 f% ^) p# a! ~4 ~9 w( B3 {McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ t  e4 s  B/ f2 J2 R
| MCASP_PIN_ACLKX
( o7 w  a; z2 j' f! @$ Z6 U| MCASP_PIN_AHCLKX# r$ \! m. c% K6 Y# @4 h
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
# B2 `# b; E/ m4 m6 p* TMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 @$ h, r# k* y3 P2 ~7 j( d; D| MCASP_TX_CLKFAIL
7 U) ^0 c& o, r' M5 [' i| MCASP_TX_SYNCERROR
+ Y7 X( F/ J* g$ f. q, h' a| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 @4 K1 a7 q8 _| MCASP_RX_CLKFAIL  \3 |7 @- |0 p8 V0 ]5 ^8 t
| MCASP_RX_SYNCERROR ! o3 ^, |! h( J& B4 Y1 S
| MCASP_RX_OVERRUN);
# d  I/ K6 T) a/ O) H}
static void I2SDataTxRxActivate(void)! W0 o' t1 q2 e1 f0 i5 K. K
{
; @9 ]% _2 o" n0 O6 i4 }/* Start the clocks */9 Q9 p. r: Q7 H7 Y
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& k( \3 w& w" M9 h$ c
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 e/ s' U+ h# o& u
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
! R7 Y4 q' U! O' |EDMA3_TRIG_MODE_EVENT);
0 D5 Z: O% [: tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 _4 P9 z4 L$ K: j( m
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 G, x! t) ?6 `" z3 T' lMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);) R+ x! d2 T* X/ _* u: I3 I
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
8 i/ m: O% t: }. Kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
: N  H2 q( t7 g& cMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) m2 ?: P# x, j6 Q; \; kMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 U7 @$ d8 m& g, P% P8 v
}

9 [' d9 v. i2 N, q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& U7 C4 k7 c1 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-2 06:18 , Processed in 0.038566 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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