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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12650|回复: 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,: A- T$ a% h5 ]- x
input mcasp_ahclkx,( I/ u9 M! K3 _+ e. [! L, |6 o( T
input mcasp_aclkx,% x0 @+ j6 T( E# I
input axr0,
0 ?2 B! Z: r4 [/ @0 a* \' `- a$ F9 i+ J/ O% R( t7 A; ?
output mcasp_afsr,
# K- x1 S: e2 M, X* \, Z  J: t; Coutput mcasp_ahclkr,
4 V" N  ?1 P$ doutput mcasp_aclkr,
1 I5 z' B6 c' D3 R: R7 Joutput axr1,
% z/ k# O1 y- s
assign mcasp_afsr = mcasp_afsx;
. I3 u* K5 x4 o! k, \% Qassign mcasp_aclkr = mcasp_aclkx;% \+ Q2 ~0 I0 r; y; N" n8 S4 H
assign mcasp_ahclkr = mcasp_ahclkx;
( P3 I. G- Q. {! j2 hassign axr1 = axr0;
5 W+ b4 y  E9 f4 ~! h) O
1 X6 Q; K0 R1 |' m4 M4 \0 D
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
& T4 o+ N" @7 Z; V5 \! b& U+ c+ D# A
static void McASPI2SConfigure(void)8 T$ |9 s  T) P; U5 Q
{
9 K" h! U7 P& v+ M: q0 F# lMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
! p% O0 ?- L" u1 J3 j( ?McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- g% ^# }! m; j' C
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);7 k! X3 ?4 e/ @
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: j" ~! J# L" k! I/ j
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  x, S7 z4 Y0 E; ?! z; i5 VMCASP_RX_MODE_DMA);
4 B# B- h  |1 ^, d; z. ZMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ o9 N, f- ?6 j8 e
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( U: s. u, @$ `6 g
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 K6 u- {; R& ~+ {+ tMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
; y- c8 X* N1 ?# N; B& IMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! U: \$ \5 T/ }9 j. zMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" t* x  P0 g5 B$ A4 BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 m* Q6 j" @% Q9 |* B4 g7 C$ }7 j
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 }* t( A" X0 [9 p; k8 _; _% AMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& c2 M$ M. n; W; ?/ _; N4 h0x00, 0xFF);
/* configure the clock for transmitter */1 q2 Z  }: `* a; F* A, @/ i
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
6 e2 R2 e' G* D) u' oMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ; o0 d! z0 F* M) g* }' c2 B
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 F0 g9 a9 y; R5 p- m" ?
0x00, 0xFF);3 a0 }. ?; U+ b: _/ k. M8 Z2 B+ V

& d$ T. |$ _. h- N/* Enable synchronization of RX and TX sections */
& _. s3 V& r' ~" l0 X) k9 n  _9 r- XMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ m) F# V% W0 a, V! e& J
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 }  C( u' n5 K0 r# [1 [" M
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** U$ z9 j: \' N
** Set the serializers, Currently only one serializer is set as: |: y% T" R1 P2 C+ v
** transmitter and one serializer as receiver.  d2 [0 L) z; W# l& }$ w% s7 u
*/" d7 ~( [, E& D8 \
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 H+ V7 K/ s& _9 [8 n
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
; N3 B  x1 H* G+ u& P4 m$ p** Configure the McASP pins
( t1 e  i5 E/ ]9 @! ^( I* i** Input - Frame Sync, Clock and Serializer Rx
; k1 }' U  y) M5 q" K. G** Output - Serializer Tx is connected to the input of the codec . C% q& W3 c+ a1 e! f+ |
*/
, ^0 W6 h0 B- p8 D# s$ X/ VMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
( |1 @, r, h1 S8 i$ V: K) lMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! D8 B* J/ v  r( @8 K
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX- I$ q2 m, {: B
| MCASP_PIN_ACLKX
( _% {. S8 r! f# o/ O* }) u. H  x* x| MCASP_PIN_AHCLKX% {$ N! R* ?7 E% _' ~! ^
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' C% `" U9 Y! e# KMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & S' L4 A/ X( V1 z) H/ {, T
| MCASP_TX_CLKFAIL
. L4 E: \6 {$ o% Y% g, \2 z| MCASP_TX_SYNCERROR
; x6 g( M; }$ `- f. }8 q| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % @. n9 W8 L* g" `
| MCASP_RX_CLKFAIL
  @$ z$ z2 S9 p1 D: A| MCASP_RX_SYNCERROR
, m4 n; ]1 q0 ^: j' s( B| MCASP_RX_OVERRUN);
' ~3 y! T+ d  @}
static void I2SDataTxRxActivate(void)# a% s* n9 ^" V( w+ T% b
{5 @% W; x* [# N* c& U0 R8 ~
/* Start the clocks */  v8 x* O5 U# h- n$ {
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* {& J! ~& [! C6 g0 p2 f3 V% x+ F# a
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */) n7 t/ ?. K3 u* d3 U- i: Z7 L: T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) W% b$ [. V% s) q$ Z# a. ZEDMA3_TRIG_MODE_EVENT);2 K! b' N+ U- S- M0 _$ p' l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! U, [0 l4 T2 T/ A" @
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( X3 e  I+ H% I9 b4 v, bMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);' S6 X$ Y& q" c# w
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */6 `! p7 Q: [0 K. L( ~2 d
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" w  M" d1 x6 r+ r  _" r
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ }, E* V$ r1 ^' n# J
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 a  C# Q2 A9 ?* ~, j2 z
}
# |- U: r+ _) X* L) K( W
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

1 E5 i& I- Z+ h% W) L" z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-29 22:52 , Processed in 0.042413 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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