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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12674|回复: 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,
/ @# x& B1 d8 R3 {/ Uinput mcasp_ahclkx,. Y+ ?; o  M0 z+ D% b! d
input mcasp_aclkx,) P  @/ [! z/ K, i, e
input axr0,
0 z: r- d+ t( {) ?9 y/ X3 _" ~( b! U4 y' D7 L6 Z7 B. }  e
output mcasp_afsr,5 y( H: D" v& E3 @* I, S
output mcasp_ahclkr,- S" Y! w; M% n) _
output mcasp_aclkr,& _) q) Y) F$ `5 @* |) h# X$ [5 [. q, ~7 ?
output axr1,$ I! j# |; ]! m( V) W
assign mcasp_afsr = mcasp_afsx;
+ Y4 w5 f+ `! Lassign mcasp_aclkr = mcasp_aclkx;
0 X8 ?* O) B" u2 s5 Qassign mcasp_ahclkr = mcasp_ahclkx;
: O& j7 \3 p7 @  ~6 H! m# ~assign axr1 = axr0;
; c, N& U* B0 e
# X! I3 T) B: k6 T  l0 M
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ L* e3 A1 J3 e5 ?
static void McASPI2SConfigure(void)! N  z9 a, }6 J3 B' s/ B2 ~4 A
{' s/ F) ]' b' p( f# f9 T
McASPRxReset(SOC_MCASP_0_CTRL_REGS);! q' d' E# G) z6 z$ I* q" I/ h1 j, l! c
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 [- S) N5 i+ nMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);- j& v2 c5 s% t' J
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 o( n# H* ~" X. o; \0 g6 g
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) R1 h: \+ @# H5 [) bMCASP_RX_MODE_DMA);6 O9 Z" r0 \$ m) }# t8 P( m. U
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ j: N# }0 C& j" u7 k2 `
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* ~, P, X* z8 i0 W5 X
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 k+ A: ~3 {4 ?$ s% K
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
+ F2 F% l( F5 T  SMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 0 Y! i& F) n  ^* L2 J8 p2 ]
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  D$ Q1 p2 D5 o: s: I9 p
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 V+ n3 I/ q8 Q: o# x) SMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 t; a* Q6 f$ I" V7 ]3 x6 w
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,- Z" r& N2 f. v, _" m( W# T( D
0x00, 0xFF);
/* configure the clock for transmitter */5 [7 l4 n* S6 H6 h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 l- {& d4 R6 {1 Z9 jMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& v6 u0 A) R( IMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,* }" r; {( M3 p  [& O1 ?3 n3 n
0x00, 0xFF);
* n' O6 E% h8 H
  B, E. X/ r# ~$ Y/* Enable synchronization of RX and TX sections */
4 G0 W" v+ D& W2 |McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */' ~0 D  B5 C1 x% l  t
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
- T' e% C* ?# Y3 P+ s4 V. C" dMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
/ P2 W* p1 z( t9 I2 N$ A/ g8 ]) G** Set the serializers, Currently only one serializer is set as, D5 ]$ B$ P9 h; I; ?9 L) Q
** transmitter and one serializer as receiver.
# U4 C6 f' q" o( J2 b! b*/+ f, A' E$ y* H5 m
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
! _3 [# T9 F4 vMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ `+ f+ K) z" }% U1 a5 l) G1 L
** Configure the McASP pins
$ U. W5 V! M8 A! C/ E0 ~: G! ^** Input - Frame Sync, Clock and Serializer Rx
" E& b; c6 r  }6 W4 L9 e. m** Output - Serializer Tx is connected to the input of the codec   r2 y+ f7 m( C% b, m- O/ g. H
*/
9 u* R9 ?3 ^& D& r4 q" ^) ~4 h" }McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# f) c5 C% |/ f: [: G4 JMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
4 C, F+ [5 }0 b* sMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX1 c- m4 W$ E! \
| MCASP_PIN_ACLKX( z- R$ m0 R+ u: F9 A$ A
| MCASP_PIN_AHCLKX
% l3 Y+ m! K. Y# i$ U9 v# e| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' n. [; _6 d8 O3 C2 R
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
& V$ Y& a8 C# C/ c| MCASP_TX_CLKFAIL
; w* D  Y# Y/ a/ q: q4 f5 @! y! @7 Y| MCASP_TX_SYNCERROR$ _9 f% @: V+ k  P7 a& p/ ]  M* T; q8 k
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) \+ ?# f, `+ l+ R| MCASP_RX_CLKFAIL8 b) P0 S2 V2 r5 l9 U/ P4 L% R' n% {
| MCASP_RX_SYNCERROR 7 U* `7 M/ _2 ]
| MCASP_RX_OVERRUN);# U9 j$ ^. Z7 f
}
static void I2SDataTxRxActivate(void)
# z2 X( O$ N, W5 p, o3 D{
5 K7 W$ l3 z) J, I: r8 E, r! j5 u/* Start the clocks */
0 `( ]! Q, [* p' p4 T  NMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
7 k# v9 o- z! \" e/ {9 pMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */6 Y' R+ G: T7 [  T3 j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 M# U. j" v2 |- ZEDMA3_TRIG_MODE_EVENT);1 @' v9 v, f; l& c. ]
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : D: k9 P( m) m
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */7 L! Z% f# Q: ^# l+ n' @" A
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, S8 A# c0 U6 s( U1 R- e& D' r: VMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 b$ q; }: m% Q$ a+ s0 xwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& L/ P2 J8 |0 C5 FMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);+ P. K! x- x6 O: _' k5 F
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 H( B& D5 T  @}
& x- B5 e3 s# W0 D' x* h9 S, I  W
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ [7 w0 B. l0 q0 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-3 05:30 , Processed in 0.044750 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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