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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11021|回复: 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,8 U% k" B3 T( b3 J- n2 T! B
input mcasp_ahclkx,
& H- ^- S: T" q5 _input mcasp_aclkx,1 G$ g2 E2 \7 _; Z) e# j
input axr0,! {- W7 l+ Z/ i+ m- Q+ H9 v

8 x* H) l4 J6 }+ X+ {. [output mcasp_afsr,
/ p, }( Z) c9 M$ {3 M& O4 `8 l, Xoutput mcasp_ahclkr,6 ~6 p% `- L1 Z
output mcasp_aclkr,
- ^4 k2 P$ C+ `: Q* noutput axr1,
8 P2 Y$ {- t" \/ P
assign mcasp_afsr = mcasp_afsx;
- Q; h: B8 t2 X) F( cassign mcasp_aclkr = mcasp_aclkx;! g4 J" F1 q! e
assign mcasp_ahclkr = mcasp_ahclkx;6 c- T" q" E- K
assign axr1 = axr0;
! s8 N: e/ {( P# f0 S# B5 D! N6 D- X+ I/ C
+ o. T: B1 F$ `4 @& k. d% {. l5 L8 p
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
9 a! k- F5 p, q# m  S
static void McASPI2SConfigure(void)/ s  U1 `/ a  \; H2 s& ^; `
{  O8 O$ P5 y! Q! |8 L; X
McASPRxReset(SOC_MCASP_0_CTRL_REGS);" |, k3 B) F7 f* z! G1 k9 w
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 p- J* ^8 h9 l5 Z+ BMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* q4 F3 B$ k8 d
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. K% d. a  @5 l1 [
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! a0 S9 g0 y, @% v0 v0 F% c: Q) xMCASP_RX_MODE_DMA);
" t9 v( u; f) `1 ^McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 b: Q2 a; i) Z: }
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 S0 x6 j: W6 W8 Z0 z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
8 g3 ]& D4 S0 a6 ^& G1 H/ SMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# r! Y9 u7 t9 U5 {% P1 \McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
) {" X$ E* [' O" xMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */6 _) o0 s& ~6 d2 _& r+ C8 Q8 b
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 K, Z5 f- F; {
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * r9 M: O9 U2 U4 v# ^4 r' l  _- o$ h
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) K, D0 _7 W# ]. X0x00, 0xFF);
/* configure the clock for transmitter */
( F; d+ N% P5 k! h/ sMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 {3 j. `; m# i# g' L. F
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) e& g+ ^) p) @2 e3 N9 N3 pMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,+ h4 M5 M$ p* ?3 h6 E2 q2 @! K% X
0x00, 0xFF);
8 U, a$ F, A* P8 `" x
% U% u8 x0 J1 M+ e  L/* Enable synchronization of RX and TX sections */
8 j: Y. N7 ]5 ?McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% ]7 o1 N  d% i
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. S5 C4 p" r. E- L' k/ ?- CMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
9 E. f* \0 E. f+ J4 y4 ~** Set the serializers, Currently only one serializer is set as5 n7 y9 l+ ]( k* Q$ z1 r7 p- ]
** transmitter and one serializer as receiver.
* z; d6 {- x+ Q* W*/6 K: H- Z) V) A( ~  x
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);, c3 G/ C: T3 e% M. a; V
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ g( Y- z4 u$ n" [2 ^: c: z
** Configure the McASP pins
! |+ J6 G! F0 J& n5 \** Input - Frame Sync, Clock and Serializer Rx! x1 b( I5 v2 H7 a0 X+ N
** Output - Serializer Tx is connected to the input of the codec
5 g5 i% M/ {6 |& x5 X' K- `0 B6 W*/
+ g4 c1 M9 q. |" n4 GMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);! i6 B9 M( E* @5 g6 y, H) c% P
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 T& W# y; i' C3 B' g' c* s
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  }; l+ B2 A& Z( u& A; ~! v# I; ?: o% E| MCASP_PIN_ACLKX" v* [8 p7 |  l! _  j  P3 H, w& B
| MCASP_PIN_AHCLKX+ u% F& O8 x4 G2 r4 n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */2 x- g% O+ d, e$ j( C% r* C
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 R& O/ e- W: t1 i| MCASP_TX_CLKFAIL 4 Y/ M: Q& T& b6 n
| MCASP_TX_SYNCERROR
, Z" ], M7 G3 D' N  n5 t$ G| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' ^  }- k9 b. Z4 i
| MCASP_RX_CLKFAIL
' K1 ?% w2 @* {1 K# v. x7 v| MCASP_RX_SYNCERROR
6 V: t/ ~7 C' c+ O9 p+ o| MCASP_RX_OVERRUN);
' G: V/ k/ d# g4 ?}
static void I2SDataTxRxActivate(void)% ?1 w  U! p7 k% X' V/ M
{
) s# z$ t4 |( K3 W/* Start the clocks */& I0 {7 `$ x) e9 t! a6 W$ m9 l
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 O# n- \# T, X2 g# ?+ V
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 Q5 a  P. T* e; LEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,* {3 U+ u- E# k
EDMA3_TRIG_MODE_EVENT);! E! h( M1 \) z1 s) [
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  B( o$ l: h$ J# ^EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) B# O( r# o4 o, \- u8 V! X. eMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 G' `- u( D6 P2 ^9 K+ g% k9 C
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */6 p% c2 B5 Y4 q. S
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ o3 K$ X) Q9 t
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) y: s7 |1 x3 Y: ~! O, \
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);& J2 u  i7 n# w' {# _# Q# y
}

1 f/ v# _8 i0 Q" S: G! w
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* R% v/ v! [$ [/ j: |: N: s2 u, H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-22 08:49 , Processed in 0.038676 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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