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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13620|回复: 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,5 ^9 P- s0 A0 H& B; i
input mcasp_ahclkx,1 \5 ?8 \9 P( W2 P4 o, d2 W/ C8 _
input mcasp_aclkx,
7 {+ c8 |/ X' Q) R% \input axr0,3 v3 ?4 ?( c- L+ i

# m( x3 Y* z4 ^0 |, d7 p" C5 Foutput mcasp_afsr,% ?( }- K' I+ m
output mcasp_ahclkr,4 T# h9 C+ {1 q
output mcasp_aclkr,
, t2 s2 H0 G# ~% i3 Y; g3 r7 ]: Voutput axr1,
& G9 [. k  a% k8 `. D9 ]
assign mcasp_afsr = mcasp_afsx;: s# R( _+ _" j: W, L# R2 _
assign mcasp_aclkr = mcasp_aclkx;# N. q( p9 y+ l
assign mcasp_ahclkr = mcasp_ahclkx;! Y0 D2 I; [- ^8 Y% ^* Z: X
assign axr1 = axr0;

* ~6 y$ i, K) B3 U1 C* w0 F7 N0 m% a& P, b. G9 R
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
, ^4 L0 B+ m, o/ D$ ^
static void McASPI2SConfigure(void)
  o& h$ r4 t" f{/ f9 v1 ^( W! S2 x9 }7 l- `
McASPRxReset(SOC_MCASP_0_CTRL_REGS);9 k5 U1 M9 y( I/ A; p+ K) R3 a
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
  a. [+ @/ c* E( C: C/ VMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
8 ]; q$ Y, Q3 y* i5 J" @& E# pMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 P( P: ?2 V4 p* K
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; H0 @" @7 Z; f, @; o
MCASP_RX_MODE_DMA);% |  D! A, i: ~- U
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 g# b; ]8 A/ _# v3 n! _MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ J! b' ^- j- @% O( D+ c+ ]+ U1 v
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
  Y# D, M( {* M0 ~  \0 Y/ R7 mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! p1 t$ x0 V& S* Z7 j; ^
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 p- l/ h& o& x# RMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& h, N! m. v: U% e3 Q
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 B1 U8 m4 ^4 R& \4 y* `/ `McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; @; ^3 a) B$ K9 d1 }- C# fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) b# e9 ]8 `0 f0x00, 0xFF);
/* configure the clock for transmitter */
! n$ J3 w- x5 u- h0 eMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# D4 U1 f9 ]% N7 z( s! wMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
$ W3 \- S# L' `McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 k. [; W' B1 ~, [1 |4 c0x00, 0xFF);
& H' w" L- Y) ~# |# s! j1 C5 X* H( k; v2 O1 X) L$ A
/* Enable synchronization of RX and TX sections */ : @- X4 u: F% j0 ]% [
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( K  |/ M$ p* z( I# P
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);/ ~2 D7 D) V. k1 V3 t+ _; ~) w
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  B: [" m* {7 ?+ l/ A" @** Set the serializers, Currently only one serializer is set as
3 M2 c9 Y3 R+ t8 d5 e** transmitter and one serializer as receiver.
2 d" ~6 U# d0 ^- u7 d; D*/; q$ ?0 E6 Q; F6 _; t
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);0 J5 a. K9 n( W: w$ h
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ d  B1 d2 q" \9 k; |- n# {
** Configure the McASP pins - r8 I9 b# b8 W+ s
** Input - Frame Sync, Clock and Serializer Rx8 j7 a' p% H0 t0 H& H, Z; c" B0 v
** Output - Serializer Tx is connected to the input of the codec
- I) u  J+ l- M# m" ^*/
! W6 g5 y' m  c3 f+ v/ TMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);  @& L1 X0 d( R2 l' K& t2 ^
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 R. W, Y8 J( V8 n' _3 b/ c  `
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) Z2 _6 C: [$ H9 k- I! m. a  j
| MCASP_PIN_ACLKX) K  w( S) L, ~! G& K4 r" ~
| MCASP_PIN_AHCLKX: J5 s, u7 I4 e$ m8 T
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
3 ?# ?% q, h2 i- T& q3 |7 \7 Z4 \1 pMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
, t# m( X+ X/ T| MCASP_TX_CLKFAIL
( V+ m8 F' s# B; v0 U7 l) l| MCASP_TX_SYNCERROR# h& S5 z7 D( y( f6 l: ^
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( X, y' \: W! f5 J% o
| MCASP_RX_CLKFAIL' N) g  T" Y0 R  ~" W8 Z
| MCASP_RX_SYNCERROR
( Z* e2 ^8 {" e  n| MCASP_RX_OVERRUN);
. P$ X" N+ E1 s}
static void I2SDataTxRxActivate(void). H2 Z" f& D' L3 V
{& N. x5 T  G  A5 |/ D  |/ P
/* Start the clocks */
  t- d" E2 J% P. M( ]; fMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
$ s- D, k& n3 I1 B3 \McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 _  i6 U  U6 K) h6 s" n. `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
5 Q& g1 k) P. S  Q1 Z# vEDMA3_TRIG_MODE_EVENT);) ^$ D* X  D6 s4 `+ M6 Z6 U3 A
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + T$ u; ^- p# z' V# {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% F. ]6 V$ D) g' g" q: f4 b
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 @2 R& ?4 j$ |# r* ZMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. |# ]4 h. W/ jwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 _, Q/ L' y$ F, G" sMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
  L, f# r1 B( o0 hMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 F* @9 x% k4 p$ j. ~}
# r) R: Y0 P' T. a# J5 y4 a
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 \  ~# m! P7 Z/ `" b- M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-14 12:53 , Processed in 0.038193 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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