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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10529|回复: 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,; b: ~) R& c7 P8 ]: j4 _2 Z
input mcasp_ahclkx,) j* {* k2 O& b6 U
input mcasp_aclkx,
5 H- V& l# j' a/ f) ^. q- ~6 Cinput axr0,
% e: X  x) n8 ]. I% Z6 d# I1 k3 |, w& c7 X: K+ ?1 p
output mcasp_afsr,' I. r% G6 n% l2 N( ~* c: Z4 D* \" v
output mcasp_ahclkr,
1 J  N9 u' o, a1 o! Ooutput mcasp_aclkr,' o7 p4 a% N, W3 R3 f4 r) q
output axr1,
5 H0 _2 K4 u- u- [$ O
assign mcasp_afsr = mcasp_afsx;
" x1 d- t- r/ bassign mcasp_aclkr = mcasp_aclkx;3 @: o+ v  I( V! B9 n
assign mcasp_ahclkr = mcasp_ahclkx;
& w$ [2 d: O" G. R% |. D! x6 q5 gassign axr1 = axr0;
$ b8 d. ]3 Q4 w( E+ f7 k2 i
) v: o6 d& C8 L8 R
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
% V* m# F" y3 _1 y
static void McASPI2SConfigure(void)( J' K/ U% [6 L8 i) E
{
! z) l6 o/ R+ b( v8 }  g5 m6 `McASPRxReset(SOC_MCASP_0_CTRL_REGS);6 {$ W  L* Z% Y% C4 l7 d3 Y
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ g' i' o- g0 o7 b, z) m
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; b! d& n( X- e) V/ kMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 W# ^  g$ v- ?0 F7 r
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' R( i. Z5 F0 ~* k& mMCASP_RX_MODE_DMA);
3 Y, J3 R8 a+ z" |McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 J1 \) T8 o" B
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
1 C0 e! l( s) E+ f- FMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; v, J; G! e, B  \4 i0 W2 bMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);3 r- ~6 c! C; x
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 4 F1 M, p6 _* R+ u
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
+ G3 S- ?# w" e  sMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ {" Z. _- H& d1 y1 k3 SMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 v% S& k# `0 L3 E+ B& f: OMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
' ]+ S" p% O7 O0x00, 0xFF);
/* configure the clock for transmitter */
. J4 R  k: U1 Y7 L6 t, p' l" Z& E6 e4 ?McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
4 k6 F' ]. G2 `/ B0 O2 EMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 8 J( [; f& l4 I2 W
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,. R1 a8 N) e$ O  W! G7 P) l
0x00, 0xFF);
7 |. A1 d. l7 x1 R: X, P8 K  {) z2 O5 C3 A7 N0 {/ h$ B
/* Enable synchronization of RX and TX sections */ / _( Z/ ~# ^4 Z8 W0 F" }
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */9 v9 h; `/ E4 x6 Q! F/ a2 G) Q, s, a
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 ]( x* W- L$ N: I, ]' s* R7 @McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
3 ?7 z: S* Y% \. B: h$ R( w** Set the serializers, Currently only one serializer is set as* Z6 c/ G1 Q9 z2 v' c5 z7 h
** transmitter and one serializer as receiver.4 a3 S  q- N$ a" F0 y
*/
( X9 F' s+ U: X' JMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 R) m; z- V) s! R( R, F
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*4 T. b  @) D; @$ w; t+ i6 M
** Configure the McASP pins
- a3 X% Y5 S' C! [** Input - Frame Sync, Clock and Serializer Rx$ V8 @: }8 q. |  F
** Output - Serializer Tx is connected to the input of the codec ; w/ l" L+ F, P( |3 v1 Q6 L7 N
*/3 N1 R' ~: L# N4 H8 V
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! x9 ~  V# z( i" E' o# ~McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
% U3 m% L( [+ i8 rMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ Q; S% m& x: C" H
| MCASP_PIN_ACLKX
4 D; f, g0 @9 S* y* P8 D| MCASP_PIN_AHCLKX
) \+ z0 C+ U7 N9 j$ C| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
+ F  O- b# [. {& P% EMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: a5 g8 N' ^' G| MCASP_TX_CLKFAIL
. j/ ~' W. o7 j0 O8 i  n/ x| MCASP_TX_SYNCERROR
1 R$ e8 J+ }! n* a| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 _# \- t7 v6 ], e6 |+ n2 O
| MCASP_RX_CLKFAIL, f* g/ [- z4 ~; w9 L3 M
| MCASP_RX_SYNCERROR
; O- o& X$ W5 ~% Y( w' d7 Y5 r& R| MCASP_RX_OVERRUN);
1 t) s2 [/ B' _! M* K* |) c}
static void I2SDataTxRxActivate(void), a2 Y4 ~2 G( h
{
0 o. z% Y) w9 g! M% W' X. o5 m/* Start the clocks */
; k; L; Q: c. K1 s$ zMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
$ J" e4 w* S& ]# dMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
% x8 [% _) _! O. A* @6 z) D6 p' ]EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 r2 _+ ?1 x2 X
EDMA3_TRIG_MODE_EVENT);9 ~3 I  M. {9 K  [( z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# z7 U/ L# G- E7 [EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
4 E2 r4 t- Q5 h+ l3 d! k! C; `McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);2 j9 e) M2 l9 g! u( M
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
! {2 g+ |# \- E8 Y, w( dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 V) I" ?* w3 S
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
$ P- W0 K4 C+ L: zMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
) \; \& Q# e$ D. p% N7 S6 n+ ?}
+ g, y- g0 r) l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
! o. o+ z- W4 |! l; G0 t( q/ b( ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-9 04:09 , Processed in 0.042973 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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