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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10846|回复: 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,
5 Z7 e2 b7 F3 W5 O  q+ K! o) m3 |9 T& yinput mcasp_ahclkx,2 u1 R" w- W# A2 }
input mcasp_aclkx,
- j+ |6 O$ I' u9 t3 z& ?input axr0,. X1 p* ~" l5 s, v6 Q$ ?2 f7 P

- C' _( |9 ^3 o/ S, Youtput mcasp_afsr,, A) C- d/ ]9 u9 t0 b% }
output mcasp_ahclkr,
- T. I, q( T: O! U% M, L' x+ R8 Uoutput mcasp_aclkr,
0 t0 [$ R& b5 r; c8 xoutput axr1,
0 R# ]1 _7 f" _" K; m
assign mcasp_afsr = mcasp_afsx;; [; }4 j+ k* ?+ v% n
assign mcasp_aclkr = mcasp_aclkx;
* ^1 f1 Y8 J. M- h1 S! x( xassign mcasp_ahclkr = mcasp_ahclkx;; B- I9 p4 J+ K, Q) D
assign axr1 = axr0;

/ f6 k* ]$ l( |2 [# {' j  I( ~/ i1 u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
5 C4 H* z# ?6 m6 e' H
static void McASPI2SConfigure(void)8 g0 ^% b+ J: N, P1 n
{
! E# g; i$ `9 ^" b+ V* [2 D$ u2 lMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ t: `! e+ x0 d. j2 n! B8 IMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. e8 T: F; S) Q8 F6 L6 M
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);- a' }: A1 d7 m; O
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */% l) U. B- g/ N2 @+ R
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! ^1 o1 D+ e) z1 W; ^3 _0 pMCASP_RX_MODE_DMA);
5 j) D0 s' x$ i0 yMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& ]) T- Q" L5 T0 T! ~( y" fMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 Y- R) T/ ~4 q# C" a9 f
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! _6 E: Y  W) I  ?6 YMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);& o- x& i/ @0 s& X0 ]) f& E
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, . H5 d  ~$ }& L8 f- O, z( V: M. Z# M
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
6 k& D8 S( J5 j) Y) W8 jMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ T% n6 q, d% E; q6 `8 oMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& J4 `# p' ]# kMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
; a/ u1 _9 {( R0x00, 0xFF);
/* configure the clock for transmitter */
. `) t  n& D, Y) v& D7 t8 FMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  Y7 |: _% |( n/ B' q' J
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - I) \2 O, l: Q; \7 s
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," f2 z. @* K8 q+ y3 L, `- W7 \
0x00, 0xFF);
& [6 d' \8 e& J" f8 g0 ?
% Y; `1 D; H2 J! Q& J: L+ _& ?5 c/* Enable synchronization of RX and TX sections */ 9 y  l% x9 f9 o0 d+ s% y
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- j( ?) }. R; J& r( I! n% @: v2 ]McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ n8 W  q8 L3 d' r- f5 t
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! C  j# ~# n1 }+ c) A: ?* o& k
** Set the serializers, Currently only one serializer is set as0 K% h* g0 U8 L9 X+ n) Z
** transmitter and one serializer as receiver.
6 E" p1 |8 Y4 A, M& |! S; |*/# A- l% B1 Z( J; w; C
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: [* A1 ?" j8 Z! n: R3 C, d" U4 WMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# ^+ U- n$ z* }: i** Configure the McASP pins ; g, S& C& [! A1 _: w
** Input - Frame Sync, Clock and Serializer Rx
/ v4 K. K2 N( X# g2 l) `! O  J** Output - Serializer Tx is connected to the input of the codec 0 C4 t  N1 ]" Z' u
*/9 b2 D+ Y! O( Z+ z7 h
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) v6 _: V( E& T" k! U% G
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ a# {2 J( [: L( ?3 g& q( q! VMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 z1 }8 K) |  f* H; b1 K| MCASP_PIN_ACLKX
5 O9 Q( I1 `0 L- r% F+ ~5 F| MCASP_PIN_AHCLKX' `( S$ x- ~* B( Y5 w3 X9 K
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP *// {4 N; X$ F$ u9 C, X
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ W. D: Q* W1 }1 N0 M& q) t| MCASP_TX_CLKFAIL
9 u" D4 _' q8 T8 b| MCASP_TX_SYNCERROR8 K6 V6 V8 i& `$ ]" V2 q
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ l- O( \: F/ X4 Q6 ?' _: P| MCASP_RX_CLKFAIL
. Q  v) {" J# @' t| MCASP_RX_SYNCERROR
* _; J) Y; k. K# r| MCASP_RX_OVERRUN);8 G0 V! r4 _; K# m) L8 z
}
static void I2SDataTxRxActivate(void)
" c  z& x' D) p1 s8 {( R8 X{
. `- L% T. |6 e  k! V- q/* Start the clocks */5 c- B% Y6 U4 F6 D
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
. p) S5 p9 j4 BMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer *// ^+ m1 a: U, t0 h+ a; F1 }
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. S2 l( t0 T, w+ ?- Y
EDMA3_TRIG_MODE_EVENT);+ Z8 I. L3 m3 r- e# m* {
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  |8 H: i' K, J; b) G- V9 qEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
  ]: i$ I! S/ x) RMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: ~1 y5 I  U9 S: _  h0 J
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */3 N7 j4 c" W4 M0 P  E
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 k+ u9 ]+ |: q5 V. @
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' _$ ^% q1 O" i# V
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
9 ?) \* ^+ x2 f$ Y7 M; N" a}
3 |. m% N. {. K
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

, }: _. U( h0 g  C) T0 c' c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-17 09:00 , Processed in 0.039097 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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