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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10263|回复: 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,- q2 O( M$ l' R0 d, W# \" A
input mcasp_ahclkx,! P) R( ~6 [' I# S  L5 P
input mcasp_aclkx,
( }4 W* R6 _* N  }0 _0 q. u0 yinput axr0,
# R0 ^1 Q. C. ^+ J0 e. W" X) l4 c& ^. v1 n# N3 Q& D5 g+ s
output mcasp_afsr,
8 q' M. C1 U( Poutput mcasp_ahclkr,
$ Y6 Y% {8 X+ E% g7 Z6 s2 Houtput mcasp_aclkr,
( r+ P2 Y  w. M$ h& ^. a& C4 foutput axr1,( k! J6 Q( }% e) d0 w, |2 N5 X
assign mcasp_afsr = mcasp_afsx;
1 D4 a" J5 F9 Y4 K1 ^assign mcasp_aclkr = mcasp_aclkx;
' ^2 @# H  j+ M0 G8 @assign mcasp_ahclkr = mcasp_ahclkx;* ?6 l& O: B# E$ X5 L
assign axr1 = axr0;
4 I; u0 D9 P) u* r4 |, Y# }' v& L

  i5 u" r0 b  F/ p$ K* N( f, ~) `# u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
4 x8 @' \7 A3 q; U; n
static void McASPI2SConfigure(void)) _) x# [+ I- p# Z% _- M5 ]
{
, Y, d4 X6 j8 a& }McASPRxReset(SOC_MCASP_0_CTRL_REGS);
* X- @& M# F. b* q$ O3 O  w9 dMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' R- `# W4 V2 H; ~- i" }) x
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);3 [* M7 E" A: `8 T: D, l
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# P, d( X. w1 \( g
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) E% X) w! J" k
MCASP_RX_MODE_DMA);/ H' q0 m7 c0 E/ l5 }) n# v( c0 t+ V
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 ?  y. N7 B7 m! p. T* V
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */: Y' ]9 z1 {& x/ q+ O% @
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " h% `$ ^5 y) }# Z
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: e$ }* H% l, Q+ b. {6 k2 [+ [( y
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 P; L/ B; v* M4 L& q; K9 F
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
% E# |  W) C. i! |7 ^5 ~, B( W- o: hMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 R! ^4 ~) V- U
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 X* n1 y5 c& ^$ M7 I8 GMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
- N* `/ u7 ^) I- }; |! \& L; L0x00, 0xFF);
/* configure the clock for transmitter */
% s$ m" d7 N. BMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 Q0 S- W! f* h$ i; r
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % H" J4 o6 i! u% \
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, d5 \; s- N4 e) Y2 j1 n/ A+ X
0x00, 0xFF);# B& B6 h% a" u& B- u" t+ V

2 }# _% N, H+ P3 e2 K/* Enable synchronization of RX and TX sections */ 9 ~5 h& I6 {1 m& O
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
% {* o, h1 Z/ L+ ]7 MMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" O1 B. I2 Z$ N+ B
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
/ J, ^8 T, `  o. n4 E, f2 G4 W** Set the serializers, Currently only one serializer is set as- z. a/ I$ Q$ V5 O0 G) R0 Q
** transmitter and one serializer as receiver.
9 C2 P* a% G' H' v; F*/' ^' g2 d2 {  T& g; h
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
2 O2 }/ w3 k4 u& ]; hMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*( Q0 |/ u. i0 q+ ]
** Configure the McASP pins   O6 S/ T: `& K) V" H
** Input - Frame Sync, Clock and Serializer Rx6 n! Y- N  g& {( V3 z: t
** Output - Serializer Tx is connected to the input of the codec
2 A) B8 R( @& r  n: s. d' G) z( M*/! Q8 K, R9 r: G: f/ {$ j& B
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 D9 v. O% k* s" a: k
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' v/ q! ^5 `9 r2 k3 t( L. [9 P
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 k! A: I' y1 A0 r. c| MCASP_PIN_ACLKX
% Z5 `, G5 {* i; K| MCASP_PIN_AHCLKX
, W* H$ X4 c) A: j9 F, A# J| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
; e7 r9 ~; z5 N( H! g# d% k0 [McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR + c( [9 x" B$ p* }
| MCASP_TX_CLKFAIL   ^, t2 {4 q8 x. Z( c2 F
| MCASP_TX_SYNCERROR/ Y! X0 d  M& ], _; @1 s8 j8 e
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) j3 c- `5 L" ]9 Z
| MCASP_RX_CLKFAIL
9 b5 X* C! O# }( E( s  N& }| MCASP_RX_SYNCERROR
7 f/ ~& j- J, M1 V/ O| MCASP_RX_OVERRUN);; O0 z5 l8 |7 U! j
}
static void I2SDataTxRxActivate(void)
1 r, h7 T* c! N1 O- d( ?{4 x7 U1 H3 ^9 i7 k8 f& u
/* Start the clocks */
" T; z0 y1 D% SMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" h& p3 Y+ K+ }" Y
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. F& h8 A7 v. O7 h4 \; ^EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
( R+ M; a+ w4 l* R( jEDMA3_TRIG_MODE_EVENT);2 t( Y$ c. K' V5 {
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: O0 A0 O$ J1 S, P. [  i/ [5 P" e/ xEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) g5 I5 F# N' z3 \- P
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 b+ o9 B0 K4 Q% R2 Y
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */6 B6 J* B0 u; Z# e6 h
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( O! L) S. V* S/ Q9 t( X' D* D( ^
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) [+ m6 K8 ^+ X  z" [) E
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 a) m" D2 X5 {3 f) J1 _}
7 C& s5 [0 b6 Z. k5 R6 s
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

2 e9 Y  `1 X8 e: U; L9 O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-2 06:34 , Processed in 0.037919 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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