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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13369|回复: 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 z' J+ d$ h" k% ~
input mcasp_ahclkx,
+ o3 {: C6 m7 F/ {/ m/ T4 y- C* Ginput mcasp_aclkx,
6 D6 t) K1 ~+ A# u3 sinput axr0,
( G+ a1 x) g- c- X; \. v; u  Q) h' n
output mcasp_afsr,( Q1 n$ T# H: U
output mcasp_ahclkr,
1 b# f% }3 o" v  y$ Joutput mcasp_aclkr,2 L5 w6 P, S. s( G
output axr1,
9 v2 \# l8 l5 P/ [: C" X4 K# {, b
assign mcasp_afsr = mcasp_afsx;# u, b. c9 ~6 P; k6 z
assign mcasp_aclkr = mcasp_aclkx;
6 b' a" k$ a6 G+ U% F3 Xassign mcasp_ahclkr = mcasp_ahclkx;
, h1 ]; S; \" a2 j) N) vassign axr1 = axr0;

( m9 q! o" O9 c- _7 ~
" X$ P0 ?! n- i) H3 j6 E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ H, y. r2 q% J; g
static void McASPI2SConfigure(void)
/ }9 J. E+ X- c) {{
! W. o- Q$ D" eMcASPRxReset(SOC_MCASP_0_CTRL_REGS);# a) k  J) k& G& w( H
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
/ [/ h& c* l6 i0 gMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ \2 Y& B3 y9 C, Z. A/ _7 `" R
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: w% \! y, g) \- b& s
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; ~+ h, t- n7 P0 d2 g( gMCASP_RX_MODE_DMA);6 \  g- |8 Q( y3 P  g9 s$ }5 F% x
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  n+ g; H/ J. C5 l# F' y# N0 w; @
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- v7 b9 ]! S: _. Y% h
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 N5 B* x; z/ e; c/ s' Y
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# l0 `: R4 t: ^( A7 z( f2 m2 t! zMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. g: ?) |2 ^& D& j" M; WMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */7 ~3 O; A' t4 m% c& \* j  B  z
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ e# S, u! U& u" n) ?/ J, F
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); $ ^6 q  ~) b4 h2 A/ T8 V
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 Y" ?) M  _6 f0x00, 0xFF);
/* configure the clock for transmitter */) k* h3 T3 w" m6 g, F; d
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 f7 p: e1 D5 R( l3 r  K
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " m/ `1 G- \% ^& P. q* S8 X
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 Z0 O% j, `' {: c" w, m) O
0x00, 0xFF);  u& v9 {1 G1 {, ~. X4 q

: x  g' D" u) ^- U  z, v% `/* Enable synchronization of RX and TX sections */
, {3 u* m# b, X" SMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */$ G- z: V) _% T8 A. t
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
& C& N) g5 S3 V  c; i/ P0 BMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 U/ k: W8 d. }6 L2 ]$ h** Set the serializers, Currently only one serializer is set as* ^& F8 z) R/ W  v9 u
** transmitter and one serializer as receiver.4 V9 C$ \$ y; j* H! `" J
*/
7 f! a  V. Z$ Z% n' ]* C" Q, TMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);5 Y* J5 t0 ?' V
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 R* X3 ^, d4 S8 R1 |9 N3 h1 u** Configure the McASP pins
8 ~2 G" A' g/ ?** Input - Frame Sync, Clock and Serializer Rx
' X$ ?% \. a7 [** Output - Serializer Tx is connected to the input of the codec
: @8 Q) j" c* ~8 r; }*/$ ~  s3 M" c- j# F8 W" z' V9 G" }
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! l+ N, w4 S5 h, ^* y7 j3 r* ?McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
4 l$ G  Z5 g2 d. u8 p5 WMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 I5 U# t) X* _7 M
| MCASP_PIN_ACLKX( z! j, t$ j7 g6 N  a3 E) S5 _
| MCASP_PIN_AHCLKX
, t, Y2 e/ a0 f8 R  P| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ {5 w! |* v; Q' N
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ ]7 {. T; b( p| MCASP_TX_CLKFAIL
; \/ V" v8 N* {; I8 ]5 X0 m| MCASP_TX_SYNCERROR4 S- e( f/ N) e7 V
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR / f7 s/ A& g( M) X
| MCASP_RX_CLKFAIL
! D; g  D5 u3 {5 B( r| MCASP_RX_SYNCERROR
, i; v9 T$ p" i6 m6 m| MCASP_RX_OVERRUN);$ \! D+ e' C% ]3 X! ?5 ~
}
static void I2SDataTxRxActivate(void)% J; K- ^( [7 T6 T( B) v, O$ B
{% e( {0 h6 }+ ?* G7 y5 o. e0 D* c
/* Start the clocks */
" T, Y7 m1 e) f9 ~7 oMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);1 h9 C0 @: T- ]: ]5 \
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 d; B0 m: J' E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,/ r' C- ]2 g9 {) G8 [; }: }9 R
EDMA3_TRIG_MODE_EVENT);& D, z4 Z# y- b5 c
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 1 T% F' B$ B( R& G3 @; p
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */1 u7 y% V* V* B3 Q; [4 _- H6 f. W
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 G4 A$ E. z" e& Q- ~0 ^McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
' B. t4 A$ P. x* \0 b. s& x5 Owhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
6 N1 t$ B: G9 N) K4 VMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 g) t9 I7 T( R7 Y4 f8 MMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);" W3 N/ ~7 \# S1 ?1 X1 t
}

; P- K- j6 f; x9 O
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  z  L" b4 l8 R& @, e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-9 13:20 , Processed in 0.045164 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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