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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10786|回复: 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,
, K- q  h! v$ Q& S; F# h" I; zinput mcasp_ahclkx,8 N7 |: [% d$ ?$ k
input mcasp_aclkx,
6 ?0 S3 w7 P8 a! N) Rinput axr0,9 c( R' {$ e* e: C% t" |; f

1 l0 p" f5 p( r  s; D9 w9 ?0 k  Toutput mcasp_afsr,  M% u8 D$ I. S$ t4 Q. `2 }
output mcasp_ahclkr,
; D  A" f& K/ e5 {0 joutput mcasp_aclkr,
; N7 c: Z" ]/ Routput axr1,% t" T. v) P4 o3 S7 E- o; k. C
assign mcasp_afsr = mcasp_afsx;
8 o' f8 t1 n/ o$ ^. xassign mcasp_aclkr = mcasp_aclkx;
2 b9 n& Q1 U. m' S( O9 e2 b  ^assign mcasp_ahclkr = mcasp_ahclkx;& f3 P1 p2 g" Z4 A' j% q$ N
assign axr1 = axr0;

, o  ~  n( W4 B( Y. z) }
+ j4 L# \1 y# [/ j9 X3 z, E: N
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

+ L+ o2 O  ?5 a; C
static void McASPI2SConfigure(void)
! h7 ]  C, U2 W% b{
  `" s6 N' U% b; T0 Y) jMcASPRxReset(SOC_MCASP_0_CTRL_REGS);# Q4 f# Z2 z* b) b0 e
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" a0 b* i( i  @6 f/ B, N+ y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
3 Q$ V3 F% K( M) D9 t# W  |McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 K% t4 z8 V% C) u! w; Z
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 K2 Y3 L6 B  j( r: FMCASP_RX_MODE_DMA);6 a+ q+ D9 L+ L9 a/ h2 N( t
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# i' b) D" p, F+ Q( ~) }$ ?MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 M% V0 R5 K# J0 J, d& l. I. x8 l
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
+ B# l) j/ ~% ]5 }/ q; }  g6 {MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);. @; U% v) v9 ^4 }2 i
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 Q1 `: g. _9 b" f% |
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
6 ^; o* n0 o/ K* C$ L! iMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* J/ U/ ]9 W, Z4 A3 ]
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
2 @- }3 U$ V0 e; v" G6 ]. |McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
# O  G# b. n4 B# q5 H8 Z) j0x00, 0xFF);
/* configure the clock for transmitter */: G0 T, {# [; N7 m
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
& A! {, [7 N2 b: s4 q$ I5 y: FMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
5 g  m0 h2 B* u+ [/ lMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," t1 h9 J+ q" z8 |
0x00, 0xFF);
( [! T# @1 Z+ w3 `% k1 f$ T6 ~7 u2 L* }2 @$ k0 T# F4 t
/* Enable synchronization of RX and TX sections */
/ t8 s8 T$ `: l- w9 t0 Q( BMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
/ @& f, V7 z& EMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" B* p! ^; b1 Q8 C9 u6 ~
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
/ F0 z  n6 d; L. W- _  Z5 f** Set the serializers, Currently only one serializer is set as
0 _# k7 Q! J- L8 n( [7 O. i: |+ |** transmitter and one serializer as receiver.5 V  z' L" h" g
*/% P' c( \* V2 v: U) ^) j" i
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 r. B8 S! e& V7 m0 i
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 p# e; Q6 M% I8 @. W6 w8 l6 y** Configure the McASP pins   A: t: m3 o, a* W/ B
** Input - Frame Sync, Clock and Serializer Rx
- s- h# c$ B1 L' ]# ?' h** Output - Serializer Tx is connected to the input of the codec : w% B6 Q' _8 e2 K) w7 m0 b) v
*/
, [- K8 [- J, G  i. XMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ Y, k  R' k6 \
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));, G1 q& _5 [- S, {- i" f
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 F: S& G3 R- Q# i5 |" O5 ]| MCASP_PIN_ACLKX
& [" Q+ ^! z4 a$ m| MCASP_PIN_AHCLKX& W9 W& c5 t) }" O  ]$ K. W
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
3 p0 G* P+ V" RMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ ^& ?- l( P" V| MCASP_TX_CLKFAIL
$ q2 @1 z' r: N, o| MCASP_TX_SYNCERROR  \2 J' [* r% ]! f" Y' K6 v# y6 G
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
5 l: u: E$ ~4 W# ~. r3 l; V| MCASP_RX_CLKFAIL
' c( |" v2 q0 k- b| MCASP_RX_SYNCERROR * {* \) j" F* T7 v. N$ v" I
| MCASP_RX_OVERRUN);
" t% \9 L7 K; N! p# V* X: F/ M}
static void I2SDataTxRxActivate(void)
/ E& [, n& L$ ~" q{" g0 ]( ^: A2 i
/* Start the clocks */
2 [: t- ]+ R. f3 Z6 `McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ L# }. _5 d' u5 K: C' Q- t
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 p+ J+ r0 S- Q. {. d" ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; l; ~0 t: ~% x' F
EDMA3_TRIG_MODE_EVENT);2 H- I: p3 I# B! Z. z! x  V) r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
0 F6 g4 a- N/ I8 h4 `6 @% ^3 VEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) e+ f4 _+ X4 x4 aMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. G: u; G- x# G0 S( u
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 H" c( V6 ?* r. O" L1 i
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# g$ T9 P4 F; O! h! k/ B9 BMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' E5 r& U% `: r* T# \McASPTxEnable(SOC_MCASP_0_CTRL_REGS);* Z7 k+ M" r0 i1 s" b  x1 |
}

+ v" |. R6 z6 x) G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
7 ]0 u9 E8 c' ?/ A# f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-15 20:57 , Processed in 0.041716 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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