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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13005|回复: 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,) M8 b' x! }: A0 X5 [
input mcasp_ahclkx,7 L9 Y' V0 C4 W, u
input mcasp_aclkx,
. j; |2 A' x, T! _+ B6 ]% p7 finput axr0,9 s" W3 z; V2 F
7 o. C; M7 Q$ J% @. Q6 o. Q5 y7 ]
output mcasp_afsr,; s4 @  h- u5 x; }/ a6 @  B& m/ Y
output mcasp_ahclkr,
4 I% g5 l7 o4 p1 G: X" voutput mcasp_aclkr,
6 y) ^7 p0 J5 V! T/ u* f9 C. routput axr1,
7 d6 y4 Q& ?/ c
assign mcasp_afsr = mcasp_afsx;
! [" u1 G. [3 p" ?; `. l, Jassign mcasp_aclkr = mcasp_aclkx;, O" G& p7 T$ c
assign mcasp_ahclkr = mcasp_ahclkx;
5 f# t+ e5 C4 tassign axr1 = axr0;

* t& G! t2 r9 b) j# X# R0 \) H4 M) ]7 `4 P
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

! M; R# C) T/ H. y
static void McASPI2SConfigure(void)0 K. R/ h, ^3 f! E, m' {" n
{
3 E/ Q( f- _* T# d% m; @" RMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 X9 |  r5 P3 x+ `, [9 C2 U
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% Q( I2 K$ k3 U; @* i3 NMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. d$ M( F7 Y8 b- H* q
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
+ x. ^4 n6 t8 W6 H# L) nMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) O( D! X8 l7 V0 u2 T1 qMCASP_RX_MODE_DMA);2 M0 h" O" ~# ?2 g" Y- s% X0 [7 L% V
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 r$ L4 z+ d5 S, s5 c; l' w
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */) j9 _4 b+ |- A6 ^/ K* T* p
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
$ X# y  ^8 ^8 {1 a. V# zMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 r! B  F8 [* g. D
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
; d. {7 n- e, h4 ^/ HMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  D+ E% u" Z4 h) x3 f5 V
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 v7 u, K8 ?- a
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
4 Z9 |4 l& |2 r! s9 S- O8 p3 dMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% n8 Y2 ]3 y# E) l- S
0x00, 0xFF);
/* configure the clock for transmitter */' }2 v; [! o: N% g  ]/ |' ^4 x
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);7 x6 q/ K8 {$ D
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 q) N$ x* V/ x. l
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
; }! z2 n  N& K" K8 B0x00, 0xFF);6 ^( M0 o8 L" k# A

) G9 F2 K; |( U+ m. h# B/* Enable synchronization of RX and TX sections */ 0 l  ~  l) t- ^4 L6 l0 E
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 G+ A/ o. n/ f$ Y- tMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" r6 f' O8 O6 [; Y
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 s/ W8 {9 y! R
** Set the serializers, Currently only one serializer is set as
* a1 Q% l6 v: K5 e8 H4 u# j3 E4 X** transmitter and one serializer as receiver.
9 G+ d1 t: P) c. `" f/ o+ L*/9 F9 o. j# ~- \& }3 m4 \0 B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
+ D/ ^: ^  n/ p+ I* W$ H" ]# NMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 {4 h8 D5 w3 Z$ \* @** Configure the McASP pins
6 [( i! `% L' L4 X! D, W** Input - Frame Sync, Clock and Serializer Rx8 X  D; g0 ^3 M+ J3 l
** Output - Serializer Tx is connected to the input of the codec
0 A; d6 J; l+ c; d/ @*/. v' `# M- v6 D! X5 \" c
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ Z6 q8 Y' f0 x5 d- ]3 C* k
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: O$ q+ O# @2 n+ q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& ^& K4 r! L2 @8 Q) f% m* A
| MCASP_PIN_ACLKX: z/ Q8 p) j) ^, I0 ?
| MCASP_PIN_AHCLKX) J1 Q4 B+ q, \8 d1 B8 B  K! P+ B2 [
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  w( ]2 r" A3 d% l; ^7 A7 T( J
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR . n( Q* P, C! G8 t
| MCASP_TX_CLKFAIL 1 O, [8 p3 }, M# T
| MCASP_TX_SYNCERROR- t) P& [3 G/ a" f& f% {. V
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, o7 A" T$ X6 ~- I& G| MCASP_RX_CLKFAIL
( T8 Q) T8 \) \4 R  ^9 m| MCASP_RX_SYNCERROR # {+ C2 c  O- y$ a0 o
| MCASP_RX_OVERRUN);
9 L4 N% c# P: O* E/ P}
static void I2SDataTxRxActivate(void)
+ f& a3 Q; M3 Y! k+ j) c% _) y/ }{
/ k7 k* r; w2 f. v& o( M/* Start the clocks */
: E( S, v7 ?. D6 G/ X0 XMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' M7 X. h1 b/ @& @$ D* nMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. e6 Q; W; ~' {/ WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# ~" q, f# z, X& h" h: u9 bEDMA3_TRIG_MODE_EVENT);& y% K5 ]6 u% R
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 T# h# n% W) Q$ a# d7 s
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
" L2 h& I# z" @4 J! C. XMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  H$ ~& r/ D6 P9 o, k
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
; r* [) G4 Q$ m! E6 J7 Lwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* G- p9 R9 N4 }$ \$ `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
% Z) y+ i) @+ o4 Z  j" ^5 \  r8 ~McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; q! Y4 c& A& d* x# A$ ^: i
}

( z# Q6 j% g3 r
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 E% l3 V' G$ w& u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-5 06:06 , Processed in 0.056155 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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