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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12242|回复: 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,
$ _7 J: w9 g& s! P  Y5 L+ ]3 S( @input mcasp_ahclkx,
$ E# [) }/ l! `* S. c7 r' x3 Sinput mcasp_aclkx,2 t. n' a* h" r2 c' \) _
input axr0,. Q( ~; u* ?8 Y7 I. q" Z* K
7 T* i) J; z1 h  l* w5 e" K8 o% \
output mcasp_afsr,
. H& T  ~) u  H/ i# routput mcasp_ahclkr,
1 A$ j' B7 m& ~2 W! doutput mcasp_aclkr,
' @! e0 h: M  k! c. |output axr1,
' A4 {3 v7 B2 p; o* N+ b. K7 k
assign mcasp_afsr = mcasp_afsx;
1 d7 A3 t5 S; h' M& i6 c: v3 J& oassign mcasp_aclkr = mcasp_aclkx;
5 i$ ^; f8 h8 P* N3 {) {assign mcasp_ahclkr = mcasp_ahclkx;
- w) Y1 H( ?7 s- E% s5 p/ Gassign axr1 = axr0;
- \3 `9 N( g0 r1 f* J- S
% s% K. s& \2 A" e9 r
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
/ I  X# k+ [, q$ E+ e8 t1 z6 s
static void McASPI2SConfigure(void)4 l. G6 ^' Z$ t2 o: y/ Z
{
$ H" U8 A" Z, P  `McASPRxReset(SOC_MCASP_0_CTRL_REGS);+ Z. [" y+ V6 e% j5 k" A/ `* b
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
/ U" [' b5 `2 [2 x% Y, `& c" fMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);+ @/ w- C& T. _! H# X; W# v
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. @# K' r& K, T5 r" ^% ZMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# X" @4 _  [1 ^; }" C! Y, k1 c
MCASP_RX_MODE_DMA);- c, e0 q, y8 l3 {2 t& w
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. Y. g/ c* I; b0 s# ^* IMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */+ u: }5 O$ f0 b& E
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 ?# `9 v- R% `7 ?# M0 a3 J: l
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
/ y0 Z  [& F: WMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & e. H6 M8 u6 |; B: ?
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
% n  E, c0 p3 B" ^4 Q4 H8 yMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" `5 u; k: l% PMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" \. T2 S/ }7 b! A7 u$ ]. {McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,+ u/ z) h" h2 `" H7 b1 }
0x00, 0xFF);
/* configure the clock for transmitter */, o, ]  f" B$ a" w
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
0 f$ r. E  ?7 y2 Y. l! ]' \McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 u" t7 w  ~: X' dMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) y! [9 S4 s! F* @2 f: ]; U0x00, 0xFF);
; n% `9 k9 n5 |6 k# v% R+ A- i6 k/ m  S) F; `) u% e- p9 e
/* Enable synchronization of RX and TX sections */ 0 R% f% r4 y) O! M
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 h& G* y" l8 h! \$ RMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ P/ X, j, p  N  F% F& j/ wMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*& x9 L  a1 V* Y
** Set the serializers, Currently only one serializer is set as
, W1 K, ^0 b$ ~/ c# R/ g. ?% C** transmitter and one serializer as receiver.- E( C. |* n6 i. A( n: w
*// y. }' R' a% t: d
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 D6 }! r: _( K/ {: n1 h1 c# w
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
- ^) _3 \: s% i" [/ Q) \** Configure the McASP pins 9 p: x' J+ `9 E  t0 \
** Input - Frame Sync, Clock and Serializer Rx
4 t* J7 N4 T- M. _; z- I0 J! b; K% t** Output - Serializer Tx is connected to the input of the codec
8 H6 q2 V( y, {! ^! H*/- p  W6 V. ]- [
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# w) w/ B6 \7 Z; A) f8 `* ZMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) m) s& U8 x9 E8 h
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 W% f! J, X. G/ n  Y- Z5 J2 w| MCASP_PIN_ACLKX* c/ E+ f; Z! l, l  _! a$ O( n2 v
| MCASP_PIN_AHCLKX
. g7 T; Q* R$ q5 x+ W| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- \4 Y6 x* r8 |+ f+ v0 C+ l5 ^
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; f' P3 U5 m% I+ R4 |0 o, [| MCASP_TX_CLKFAIL : E# S+ v4 ?; m5 W  ], i
| MCASP_TX_SYNCERROR- N# B/ I; z3 n0 T$ z$ N6 U
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" {& |5 g- M: {' _, n. a! d| MCASP_RX_CLKFAIL  w  q, |) u# l- |$ i4 b
| MCASP_RX_SYNCERROR
9 U( l7 P. P0 }| MCASP_RX_OVERRUN);
$ G$ e3 J: Y1 \$ ?5 a& d- P1 n7 n$ Q1 d}
static void I2SDataTxRxActivate(void). g2 g/ U6 N" C5 L3 `
{
1 [2 t0 D( ?( a/* Start the clocks */
; F& J6 U3 W0 i1 j0 KMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);4 ?0 e& n: r: m  h4 T5 T  a* O: P/ n
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 E, b4 d2 V" u0 F; X  VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; T7 b0 c9 V7 w  M0 @8 tEDMA3_TRIG_MODE_EVENT);' Y" `. W! V3 S$ c3 v- p$ \
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 j/ U9 x: Z3 Q, e) `( p3 Y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
" q7 t! e0 r. F# e; W! v, [McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 ?! |0 D3 j  n4 {5 x; n  B
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
5 D' z/ `/ m9 q- p2 o7 vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 n$ }7 k& u1 F; h& V
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);6 q! q& R$ v. _0 E) W# ]
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 Y& v% t! U0 o4 B5 _  C
}
7 C+ O1 a9 F% H! ]" @
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 B9 [4 r% o4 @$ B  @5 G- ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-2 16:55 , Processed in 0.038227 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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