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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,* |; _9 ^  X5 L- G4 W, o
input mcasp_ahclkx,; `; Q" C  {3 O/ v. ?6 F/ _; K
input mcasp_aclkx,1 R8 o' y. e1 g" I/ [8 u, u* z2 ]- K6 G
input axr0,/ Y+ T1 \* w, R, Y1 M9 K

# Z; I: T6 u$ I  Noutput mcasp_afsr,
% h. x' r* M# w! C# }3 Q* h" Qoutput mcasp_ahclkr,! E+ q% p7 `0 y  \; Y" e0 G: g
output mcasp_aclkr,$ l  v1 x7 A5 t; `5 q  a$ ^
output axr1,
, y1 }7 M! P; j- J6 ?% K( T
assign mcasp_afsr = mcasp_afsx;8 f- T1 n9 D/ c) m  _+ W
assign mcasp_aclkr = mcasp_aclkx;
! s' _  \! w. ~: ~: cassign mcasp_ahclkr = mcasp_ahclkx;
- O/ l3 R0 A( @; f6 L  nassign axr1 = axr0;

. O. j/ s, ^3 e8 Q  u: l) z. a
0 S" B" l; [$ Y/ D3 V
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 _, r) K5 ~; a1 h. \6 K
static void McASPI2SConfigure(void): z8 Q8 H4 ~. f/ r7 E9 O. D' {  P
{' c+ b( b: `2 v7 R# {" M5 ]6 O
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
& r+ ^7 y% d( I( n4 xMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */% J" f; i1 A( C7 d' i
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 @# ?; U: J: i+ P0 R# p& J0 \, t4 v2 ^
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* D2 D5 @7 P9 W' s8 N
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 s- s; g- p; I# c" H$ V- x0 v- ~MCASP_RX_MODE_DMA);
) {" s* {" B* ~McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, K1 A+ a. Z& |7 b7 @0 e
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! S! n6 K7 t5 ?! S1 G
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
& K7 B: x3 G" R. m7 e, n0 yMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
7 C# e9 N  U  W4 \( w* D1 BMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" F4 ^* h6 C2 L& m7 g6 y' P4 I& {MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */5 U. f# C, U& g& R+ D% b. X4 |
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. A+ |! m+ F, `; {% `: zMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( @$ W) q0 I7 @McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 ?7 b8 L# ~' ]% w9 w0x00, 0xFF);
/* configure the clock for transmitter */
% B1 g- p) G$ e" ~/ TMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
& M, p. d8 D  [! U2 ]McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
, n$ q+ D7 H% _; C& P; j- QMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
0 H# r) b* f% M; U" B' \0x00, 0xFF);
7 v& b# Y# Z6 \9 W% K) T. g
& u5 W) |% I: V5 V5 D( H/* Enable synchronization of RX and TX sections */
3 t! r) j- O! {  MMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, D; y- ~$ \- E% ~- b+ S1 v
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ h  V. Q; i- h" y4 S+ O; gMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' {. V3 Y$ `0 {8 B3 A5 U' {0 o** Set the serializers, Currently only one serializer is set as) S% _6 H) `0 e$ K# Z
** transmitter and one serializer as receiver.+ Y/ T" g, ?+ q7 _+ D
*/* l. y9 e1 O7 ~$ z' l1 l8 I+ c6 P! i8 b
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 ^5 Q" S# Q8 B
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*8 s$ v8 T4 Z8 r: P5 {, l
** Configure the McASP pins   h( `  D' g5 k' X  h/ o
** Input - Frame Sync, Clock and Serializer Rx
! n( X8 S( Y. q6 @5 X** Output - Serializer Tx is connected to the input of the codec % D7 V% B3 n+ T% e7 y/ I! J  f
*/
  ~" n& a1 W8 q) U4 uMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);% L/ {/ h2 {4 {/ O% B
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 y. D  k+ F" q% A2 A9 j9 M3 r0 XMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX# |' u, l1 l; ~4 s! V. h
| MCASP_PIN_ACLKX
0 _2 I3 I* D$ ?| MCASP_PIN_AHCLKX' q# Y4 y# ^* f
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. f5 `* R7 m% s5 N
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( z, k# s4 p  t+ R1 N' B
| MCASP_TX_CLKFAIL
( ]: V4 w( Y$ R' F. K, j| MCASP_TX_SYNCERROR
& B9 l; ^) n  e/ n8 R/ ~5 V+ l1 _| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 k6 V  M' ^$ {( v# U: {, t
| MCASP_RX_CLKFAIL
7 B* P5 X# N- ]) b| MCASP_RX_SYNCERROR
3 {- d$ s0 x! J( K# q6 A| MCASP_RX_OVERRUN);' ?5 R! A* H* _' [+ I
}
static void I2SDataTxRxActivate(void)
6 m" ]8 i; m4 J- g2 l& w( F4 k/ M{
! H' C$ M1 y& e+ \( o/* Start the clocks */; G0 z1 ~2 q% N1 q6 U
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! \9 _1 `! S) z( t2 {/ X9 _: ^
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& [) N8 N- E4 I/ o* K" aEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,' U4 _" p0 k4 e6 F
EDMA3_TRIG_MODE_EVENT);7 f) {' q+ y6 Q  u, F* I2 L
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : }4 [* h3 J* A4 ]0 b- A
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) Y8 l# I, d/ D2 L4 eMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 l, B: t! L! K; \4 c/ |McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
6 L' D8 q2 m- C7 o6 j+ Twhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
+ B/ ]9 _9 z) S+ ]. MMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
/ _! @8 i$ J6 z" U* `. n% aMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) z, A& g& v6 B7 b$ ?# ]- a2 h
}

( w6 L: _/ R' y$ y( e. B- D
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
/ `3 I8 D# c' V+ T4 `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-23 05:51 , Processed in 0.039946 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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