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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13168|回复: 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,
/ `3 r+ G% q1 E( k) v$ tinput mcasp_ahclkx,
" ]* ?% Q1 u# t! @' V5 finput mcasp_aclkx,$ {# O- E  z) ~! U+ D
input axr0,, e9 Z* M% Y9 C$ a  v# T" `# k
0 r5 R( A( }7 a6 R; [1 E7 L
output mcasp_afsr,! W9 J. N$ T# c  l
output mcasp_ahclkr,! {) I& s' ]% a+ E8 `/ z
output mcasp_aclkr,
9 x3 }/ Z: Q$ h: boutput axr1,5 e- G! ?) v# F$ G
assign mcasp_afsr = mcasp_afsx;
( p3 e, s1 [/ W( X1 Z9 @assign mcasp_aclkr = mcasp_aclkx;
& y) [: M8 q, H6 d7 f. A3 Yassign mcasp_ahclkr = mcasp_ahclkx;
7 P& J+ {( u; y' }0 h5 J+ U# nassign axr1 = axr0;

0 K( r& L. b/ A6 k# X( F8 ~
* X' }/ R$ h: E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
4 J% F4 ?1 `, J
static void McASPI2SConfigure(void)
' I6 b; g  t% {9 F{
7 U- y5 e7 f! \2 \* jMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
/ v( [3 c, Z3 l" w% V. WMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 q& l7 c$ R% Z3 cMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
- Y% R( p0 _6 D- l/ L4 gMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
" Z- O, G$ x6 A4 T& pMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: p3 e9 Q# V) r2 XMCASP_RX_MODE_DMA);4 I4 g+ P" y: e  F. D
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ E: h: I: y9 C5 `: V8 f7 W! j; CMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
5 H/ v  {  G' J5 O5 i6 dMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # _& _) X# L3 D( e
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 p; Z! K; K3 |- m  o! {0 ^McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
9 Z* g5 q4 L0 f7 P  r1 CMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */- `! A  r. C, ]  T. N% _
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 s+ `2 F9 s* W; N5 K# Y: NMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 8 H& a1 l% ~3 u  C  n" d
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
1 `2 d% o3 F+ x, [3 f! Z; d0x00, 0xFF);
/* configure the clock for transmitter */: c+ G: w- j6 M- ]1 T1 {
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' A6 g: y  {- H9 Y# x8 [$ C9 Q( y' O& V! ~
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& R6 G1 a+ O; ^* L" T3 [  b7 BMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
0 \* l0 J6 [5 k: G1 f, I2 o0x00, 0xFF);
% W, V! C# D2 T. ]3 p+ A- l" d. O- r& |- y
/* Enable synchronization of RX and TX sections */ ( T! K# _" h) m4 p
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) h3 v  G3 M! a5 P! M" j9 tMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* R  r1 |6 s8 I2 \7 h
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 C5 |) L$ {% `' `** Set the serializers, Currently only one serializer is set as
7 T7 D! h$ e7 r- ?# N; V8 }+ d** transmitter and one serializer as receiver.
8 M5 x: T9 g" n; D$ I*/
) x6 D& A8 g: ?) n* e0 cMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
, ]; [, k: k) {: kMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 N/ x  y. W  p+ b3 R$ p
** Configure the McASP pins $ R4 A: S3 B  S% m( b" c
** Input - Frame Sync, Clock and Serializer Rx
6 P& [) b$ Y) T( w0 N) c: E' _1 \/ u** Output - Serializer Tx is connected to the input of the codec
: s  d/ y% Y; O' Q' u" n! U# |*/
$ X$ H$ d! `' M: q. h" PMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
/ U* L" S# x) }9 [  R5 M- fMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 G% k( c" B5 \: ^( Q  L2 k: bMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX: `% S/ _' f' d% C. ~% a- u) x
| MCASP_PIN_ACLKX6 j6 A& @! q- k' G# |% l
| MCASP_PIN_AHCLKX
8 O7 f* X* Y1 s0 Q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
. t3 m* j; a! _* K# [McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR , |' T1 o, E0 f; r+ h4 S
| MCASP_TX_CLKFAIL , O, s8 }( G" {! @/ L: p6 P
| MCASP_TX_SYNCERROR
: K9 y9 [3 }! i9 ^) }  b0 \) n| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 ]8 ~" j& T3 j6 O3 n0 j: G| MCASP_RX_CLKFAIL9 b4 p7 A1 U$ u( O
| MCASP_RX_SYNCERROR
/ o8 Y; n+ f& c* i| MCASP_RX_OVERRUN);
6 s& [6 i$ o' g& R}
static void I2SDataTxRxActivate(void)
* Y' o: ~" s6 _+ H4 p# S{
/ v! T6 M1 B9 x8 C/* Start the clocks */
  a! ~( w7 I) i; Q( AMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);8 S# v: r. z* s+ i6 L# i
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 S( r: y' x( o9 q! E6 w, {EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 Q8 h, `6 X; N; d* x4 T+ ]
EDMA3_TRIG_MODE_EVENT);
* r0 e2 B, ^, k& @4 zEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - i$ s* D# a9 A1 C9 c2 U" @
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& m9 T, `- e8 ?$ E  o1 @McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. q4 q5 J6 T( i0 B
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% p) M+ e2 k, u. Z7 |while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 a  W0 _- V% m  ?: H4 X) P4 @
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
8 F: u+ E3 M% }McASPTxEnable(SOC_MCASP_0_CTRL_REGS);6 S& F9 `9 b. \
}
6 I: B& K, u+ i
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
( p. n+ B& ~  p0 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-6 15:54 , Processed in 0.041882 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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