MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9163|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,* \  \1 k4 a; g
input mcasp_ahclkx," j; M0 C1 l3 p5 q8 n' o6 @
input mcasp_aclkx,0 n6 @2 i3 F( `9 {
input axr0,0 }% l: W4 X' d

+ [: v2 C' [% X, E. s$ Toutput mcasp_afsr,
5 m4 I8 Q! r  b: F1 p2 ?' doutput mcasp_ahclkr,
7 C' [9 X, n5 `9 ?4 c0 S+ ^/ ooutput mcasp_aclkr,& _" N# C9 v* [
output axr1,
$ C; @" D) t* i& o& `  \' R
assign mcasp_afsr = mcasp_afsx;' B* ~, f$ s9 K4 ?  c$ C- W
assign mcasp_aclkr = mcasp_aclkx;) }. ?: G$ }' q$ k/ Q! d7 c; C
assign mcasp_ahclkr = mcasp_ahclkx;, m$ H' d$ U% `9 i; k
assign axr1 = axr0;

( h0 p2 T; S/ m$ q6 V4 Z. D: d4 a
6 z, }+ E$ W- O$ \" W
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 P1 w7 p$ ^( f0 ?# @) H; y
static void McASPI2SConfigure(void)$ b. {  Z$ h3 f
{
$ q( h- V% Q9 q% jMcASPRxReset(SOC_MCASP_0_CTRL_REGS);$ v$ c4 B8 i) b" {
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- \5 d2 [/ {# z- s  W
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);! v3 ^  @& D/ c5 a1 X6 J/ u6 I# C" Q
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ t9 m) |4 S* l4 ]0 o3 {2 o) QMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. Z+ d; v9 e% ^7 z1 F# e7 E* Y
MCASP_RX_MODE_DMA);
( X5 z  g! I7 kMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 [' j/ m$ i3 x
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, o7 y7 I4 Y5 \1 _McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
: ?' c9 M4 h. }MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ }4 Z! a$ E7 ^! y
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ h5 m* G9 v) ~MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */5 y, i- q, T- Q+ ^# W
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 E% `5 ?6 |) j3 o) N
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & A' G* f+ A& O: r
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 z3 l( z3 ]" c; i0x00, 0xFF);
/* configure the clock for transmitter */8 v: @  b: ~1 }" m( F9 x
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! A1 f6 \& v. T
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " Y8 n, B  ?1 r5 @5 O
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* n2 ]: }% V9 s( D3 J- v0x00, 0xFF);
5 @9 q4 g* f' e+ S  ~  |/ c% Z: I. H. L3 f$ h; m- x( j- E
/* Enable synchronization of RX and TX sections */ : G! n. n/ p$ y
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
; i, S: e- E. f4 {$ u' NMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);. ^" s2 B& B5 y/ v; L( M
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. [- y. Y9 e. x* Z$ V  n3 `** Set the serializers, Currently only one serializer is set as
' c3 c8 D; z7 G: V: L2 h$ I) F: Y** transmitter and one serializer as receiver.
. V8 z3 k' `6 z6 S*/: H- t2 {$ k  r
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' Z( W" A& r, W
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# V9 O3 L- C1 l2 s/ W. i, u7 p0 d** Configure the McASP pins
/ [7 j0 ~0 x; `7 P. [8 N! N% W/ f% D** Input - Frame Sync, Clock and Serializer Rx
  \, `# P2 C6 U5 J! }3 G** Output - Serializer Tx is connected to the input of the codec
) @1 i  c- ^  |*/
. q- C# F5 r, [: cMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: d" `2 B$ P) h/ H+ s: q$ m
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) V- c- Z' _) G# ~! [
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
* h: l* x9 S7 a8 I$ j, F, a| MCASP_PIN_ACLKX+ L- `* k8 D/ T+ s8 x
| MCASP_PIN_AHCLKX* R8 ?6 o5 u" u- P; ^
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
3 i+ o0 |- f: b, S7 g5 x& l: wMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 j3 k8 y* H5 L
| MCASP_TX_CLKFAIL
) |0 q0 k. w* U" r| MCASP_TX_SYNCERROR3 r: o" y: x' x* O
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ m( i' F; H& b: Y| MCASP_RX_CLKFAIL- j+ }" \5 X" Z  o
| MCASP_RX_SYNCERROR % b( j% S3 s8 f9 O: D) Y5 N
| MCASP_RX_OVERRUN);
. \4 W/ `7 m" d" \* f- S% Y4 m}
static void I2SDataTxRxActivate(void)
3 ]9 ]2 V/ Q/ g- a) z& c" @{# X8 d0 s) t4 M( s( @" ]1 W
/* Start the clocks */* ?: F+ o0 n/ U8 i7 v; ~2 D1 s2 R
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ r1 A$ W6 ]; C! z. C+ [3 QMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 k" x* H: |0 p- U  a
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 w1 X& {: @" }  q
EDMA3_TRIG_MODE_EVENT);" c+ ?& b5 E$ W% x
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! S6 h6 F, |# t0 M
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) S3 e; f$ D/ R& \1 S& n/ z# A! i& w
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);; u% s% ^- I& @
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
6 Y1 v% M+ P7 S: Awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */6 {+ Q( `: \8 G( Y6 `7 Z, X2 n
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);1 m* m! B6 n3 f2 `" ?& ?$ m" `
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 S% \# E$ _4 z# A! F
}
& C" z+ e, ]+ @# x0 R1 @9 Q9 o
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

/ ]5 ^0 W7 [) A& d/ Q1 \4 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-24 09:34 , Processed in 0.039045 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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