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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11233|回复: 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,
" U! Y3 H) w, Z: yinput mcasp_ahclkx,4 z5 f5 |; n* e5 W% ^& d$ V. u
input mcasp_aclkx,7 Y# X; }  E, S& Y8 H
input axr0,
& `4 h5 j. k) |0 _/ y
7 \3 R7 H. {  E; {+ Y0 K, doutput mcasp_afsr,
+ u. y: U: h- g4 y0 \' E- i* Goutput mcasp_ahclkr,
# C, g% R+ u0 O2 coutput mcasp_aclkr,
* R* d; o: h1 {1 ~output axr1,
1 Z6 A0 u6 C; J/ k
assign mcasp_afsr = mcasp_afsx;
% t# z( N$ \) L9 D9 x( eassign mcasp_aclkr = mcasp_aclkx;9 t3 H- K5 B) T# f5 H7 @- u' ]
assign mcasp_ahclkr = mcasp_ahclkx;$ }8 L. W6 l8 F! E% z. p2 |
assign axr1 = axr0;

4 ]9 d  ?; s; D  F, h' x; ?7 Y) `, J! G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 M# I' W9 K) A$ v$ W" s, G
static void McASPI2SConfigure(void): S# X9 a% x" Q4 \8 y% G# c/ s
{
. m3 m5 r3 f- _- B. A  Y4 s  a$ C- O, o* hMcASPRxReset(SOC_MCASP_0_CTRL_REGS);% p! v, y/ c2 r& _
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* {3 P5 h3 q$ U0 i
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 l0 N: |8 _4 ^' s& r, P" eMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! Y/ J0 G5 w3 `- y" Y- d2 q6 L- |McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 ^( n& [8 G# W+ CMCASP_RX_MODE_DMA);
0 h/ o( k0 Z! l+ D* U) G5 MMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: q9 ]% ~, H, OMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */6 I; W+ J4 V) D+ \
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ p+ _4 A1 A- Z5 LMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
& y3 o8 {* k# [: x: C0 FMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' P  I* E: {! K6 {3 j# m) BMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: I; {) ?2 J; x( S* }
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);2 Y; M$ u3 B( Q: ]* P5 [# f: q5 [
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " D' I, [0 V" i' J
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 K$ {8 w% D6 j  K/ H8 [+ M, j* @" @1 M
0x00, 0xFF);
/* configure the clock for transmitter *// b5 V+ H- _9 {" J
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! c/ F& ?" O( m3 G1 x
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 1 N$ n0 r1 J& |2 `+ t* Q
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
1 o, _4 S1 q9 ^0x00, 0xFF);
9 L  Q7 E9 B& \) z( i7 G; S$ U8 }+ J3 ~' ^3 L- {2 |
/* Enable synchronization of RX and TX sections */ - J2 D% L$ T# i' v7 K
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
3 \8 U7 P) o# K% Z  l; RMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);, {7 T) ~9 N7 Q. ?3 j
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 v  p( l6 X( ~- u** Set the serializers, Currently only one serializer is set as
5 @3 c" h+ c: d) p: q4 l** transmitter and one serializer as receiver.
6 Q# B4 ~% L! D4 R# r- f*/5 p$ i  b  p! D: ]
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: a1 m* j. Y. m( f/ H4 Q: `6 t: N* NMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/** [( k8 V2 m, e& E% U
** Configure the McASP pins 4 Q  A9 _: ~3 B- P+ @) G
** Input - Frame Sync, Clock and Serializer Rx% u) D7 J4 K4 S/ M2 G9 N2 B7 Y( s
** Output - Serializer Tx is connected to the input of the codec 7 a* q% \8 R# p6 t
*/
4 \- t7 m/ U" l" l/ m( q% s' YMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# G1 q0 q  Y9 tMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 [  L1 k! E3 B) D) \
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( `, S* Y5 A9 u# n7 _9 ^/ K| MCASP_PIN_ACLKX
, \! K+ g: H) }: r5 |4 `# [| MCASP_PIN_AHCLKX, a2 q( E: g7 s) J0 ^% L4 i  a
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
5 T! p7 I# n* o* ]McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
& g1 u; |6 L; @9 [; u| MCASP_TX_CLKFAIL ; \* y: [7 W0 T
| MCASP_TX_SYNCERROR4 ]* R3 t$ ?  _7 H1 F& j8 X, W
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . J1 R' p  G  X
| MCASP_RX_CLKFAIL
6 Z9 w- N9 s% G9 T| MCASP_RX_SYNCERROR
/ O! o* b( R  d3 U3 P| MCASP_RX_OVERRUN);  I" \7 _. b; d! k. ^
}
static void I2SDataTxRxActivate(void): Q- B" L& F3 C' v8 R9 U
{: b2 V, {; U3 ~3 S8 {
/* Start the clocks *// w2 D0 r. X1 s" i. F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 M4 o* W$ u- T+ V  A: j
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. U* D: Q$ a* j5 F% K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" f3 ~0 z  I6 d* w5 [) j( ?EDMA3_TRIG_MODE_EVENT);
! f" T: Z: S; X* Q; G4 j$ }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
; f, ~2 M6 E3 o, {% T$ hEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, a: }# u. D  H# v
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* e6 e4 Z# u' h* F- aMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) ^, b" Y2 w' n" e' @( w; W: r* B# s
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ e6 _/ o# J/ S! X9 y+ v" p6 `0 n8 eMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);- z2 H- I- H  |6 g6 R$ R: v
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 u5 y4 X" a/ f, C
}
' ]* L; f) U7 h6 U0 D. M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, }- u  E4 j0 {  d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 22:28 , Processed in 0.039923 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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