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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
' [; ~7 U; _2 }9 G; Iinput mcasp_ahclkx,0 R9 U  c8 k9 T7 U. Y1 e
input mcasp_aclkx,
  l6 T9 M+ m8 W. G: O: V* y, yinput axr0,' N( m) W  j3 ?
9 m1 v/ S2 `( z
output mcasp_afsr,
+ B9 @2 t* v& s( h4 f( {output mcasp_ahclkr,
3 z6 @0 A# J  g. A  ~) G7 Toutput mcasp_aclkr,
. U! D1 F! w* r( {9 {' W! M& I+ zoutput axr1,/ b* S# U, ^5 H
assign mcasp_afsr = mcasp_afsx;  k) g! j; l% E. {  E5 {
assign mcasp_aclkr = mcasp_aclkx;
% v" a  e% ?( v3 qassign mcasp_ahclkr = mcasp_ahclkx;3 K$ D  U" {- w9 m- _
assign axr1 = axr0;
" B5 c& l8 \1 r

2 o$ y, _4 \1 M2 i' q- v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; D5 I' V2 d) s" I
static void McASPI2SConfigure(void)0 a- h2 R/ X6 a. g; l& p/ E' J
{
3 R/ Y; @8 `3 `McASPRxReset(SOC_MCASP_0_CTRL_REGS);  j# J; d7 }" A$ x
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" w+ Y( l( C  y4 ^+ a4 c  f
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
* s/ R$ K9 Z+ K! P' ~McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
4 R% c6 y- D, p) p% g; lMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) L4 N- r9 k; h% j9 h" V: _4 G
MCASP_RX_MODE_DMA);# m6 R6 M  k+ ]
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; I5 ?1 t3 Y/ s
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ v! W  f( T, x& K$ DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
* m+ t3 [+ b! c# k: vMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
- A8 v$ C) y! e: _6 u1 L* mMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & O' R, f$ C* Y/ o
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */! q7 F$ D8 g) S, \% H" j
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
5 _4 S) i9 W. j9 A% F$ _. ZMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 ]% q1 S: W' A8 u; e% g4 q* W
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, ?+ Z9 f# r. W5 {: X& ~3 T
0x00, 0xFF);
/* configure the clock for transmitter */. U; P4 s! D; p3 [9 N$ S
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* f* c7 _; S( F& f4 X2 g7 `0 K
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
$ r; B& R9 |6 F1 ]$ q; ^5 HMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 M1 V) j- q, `3 `3 ]- l( s0x00, 0xFF);
: k6 W* o, m4 ?# O, S& F% S- a
4 a: m) V8 a8 A& B: z% d3 U0 i/* Enable synchronization of RX and TX sections */ & {, @# O5 i$ j4 @6 s% s3 J
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
4 `9 q7 Q  W7 M' @7 d8 H7 S0 bMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 S' Z; y) r' j7 L- \: u  JMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 ~. ?; L) b  ]% V
** Set the serializers, Currently only one serializer is set as2 y. p! o1 |2 Y+ C5 ]$ X
** transmitter and one serializer as receiver.
0 b5 _% W1 M: e$ T1 @$ x*/
% \" F3 m" O- t; A# |, D0 I! rMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( J! G3 P6 O$ j9 h. g: t  G
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ s$ _- B9 P, e) m  Y
** Configure the McASP pins
7 E. e. {7 C# h** Input - Frame Sync, Clock and Serializer Rx
) e2 H* N" l9 k6 t/ u( u9 Z** Output - Serializer Tx is connected to the input of the codec
% d" |- l! A4 r0 I*/
+ B0 ]& M4 N. o% i% x6 dMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ A  `: i( x6 o, tMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 q* X4 A# q; H' e4 k3 q7 Q$ y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX, U7 I: n( S$ V: `" P
| MCASP_PIN_ACLKX
4 J5 T: N, V, B  ]: q, w| MCASP_PIN_AHCLKX$ U# R$ F9 l* S7 l
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) L0 F) B; ~  B6 J/ @& x0 `: ~
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ q$ m6 n* `1 i/ C5 t/ J/ G8 V- @| MCASP_TX_CLKFAIL
, c0 a' E- T. p# R( ^/ Z| MCASP_TX_SYNCERROR
$ @) a) Q1 p* {4 A* ]| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, I7 g+ W4 i* s* R| MCASP_RX_CLKFAIL
. X+ V7 `0 |, y% f9 v+ {| MCASP_RX_SYNCERROR
& C  |1 I) @  p2 h| MCASP_RX_OVERRUN);
3 n% n' c# ]8 F% k$ n3 A}
static void I2SDataTxRxActivate(void)# l. L6 a: ?$ P& s5 p7 O1 T: f1 ?
{8 Q, T, Y/ P1 U+ s' t+ I& }
/* Start the clocks */  i0 J/ T* T$ O1 B
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
6 t. G9 j; s5 {/ {McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
' M& I/ u- [" |8 m% f/ LEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
0 @/ Y5 O+ {( I- C- e6 JEDMA3_TRIG_MODE_EVENT);! F/ X; C4 d& j+ j. G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
$ M0 D  k/ D& j) G9 tEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( N! X  I! Y. ^McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% L1 M3 A0 m; w# _( {: C, g8 R% mMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) J/ \2 `. _0 i! rwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */' e& f% P6 v7 w# s& Q1 A  s( }/ G
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 A5 x2 ^* p" W: i% kMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: J  J+ Z; I" f1 k  ^}
7 t, `/ P4 l7 W& J2 J
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

  E1 {' ?8 G, A8 ?* S7 }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-30 00:56 , Processed in 0.044516 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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