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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12942|回复: 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,
+ d, i9 F' Q. \2 M" Sinput mcasp_ahclkx,& {1 Q" O! l2 M
input mcasp_aclkx,2 i& V7 w" K& O5 }# }& X* j* C
input axr0,1 u0 J# l9 r) l9 l# |
6 ]$ J: T; c" B( }: A4 i
output mcasp_afsr,
9 a( i, R6 X8 S! K$ ]% P; U4 coutput mcasp_ahclkr,
2 ]$ Z  b0 ~3 \& ]) O6 _, Uoutput mcasp_aclkr,$ z* ?* k, t9 Q2 G
output axr1,
1 D/ z& }: l( K1 X# j
assign mcasp_afsr = mcasp_afsx;9 t! B. @/ j; v$ A3 v7 t. n) t
assign mcasp_aclkr = mcasp_aclkx;
" T$ b2 p0 }! Nassign mcasp_ahclkr = mcasp_ahclkx;9 v& Z9 c( L( S" \$ q  ?0 }9 C3 E3 ]2 N
assign axr1 = axr0;

1 j5 l: M% q% F5 v2 v. Y/ v5 H9 r/ S1 U( f/ n  h8 y" W. u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
" H/ u# q$ Z% U. a& h
static void McASPI2SConfigure(void)3 Y: M! ]$ f1 [' }" I
{
: V; J+ H# U: j" oMcASPRxReset(SOC_MCASP_0_CTRL_REGS);1 n- Z5 R: V' U
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */, f! u! S: l! Y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);/ C( l6 P  P9 [1 v0 `2 _( w
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */1 C& H  |$ n9 ]8 m. G  R) r) h9 P
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ ]" X+ s! j3 h$ I/ l2 A/ G( c
MCASP_RX_MODE_DMA);) R! \! Q7 h& F: F
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 J) m9 A$ O+ n/ g4 P2 `
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */) `8 h* c  y% R, t0 b: D# Y, b: O
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " Z, e) `& ]( |
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);' M/ K/ D5 H0 A2 j" @# d
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, . P( X; R- ]+ T" p' `" g
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
3 m" p+ C7 ~9 LMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 t. L9 m* X4 ~' r) U4 W+ ~# zMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
/ k& z: y; s0 z, J% c- U8 R# P2 mMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,6 n! c$ G% _9 [% r- X7 l
0x00, 0xFF);
/* configure the clock for transmitter */
" m( t8 f& `. _( d3 ?McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 c; ?6 f" Q1 {3 R
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 7 T" y3 ?- {  Z5 r3 C
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,4 K, b7 w% z/ R- }. F0 V
0x00, 0xFF);" L+ t' P$ M$ L; [/ u% q! m" a! {6 L) N

$ @9 @+ q1 Y; ]/* Enable synchronization of RX and TX sections */   \: i3 i. w  q. Y) X
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( O# C% o7 E+ c- ^) i1 ?9 D% c
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 w, D2 {9 f! f: z. FMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- j& H( r3 |, y/ ~
** Set the serializers, Currently only one serializer is set as
. u/ L# y8 G7 v& W** transmitter and one serializer as receiver.
+ Q; [4 K3 P: Y! {6 |" C*/3 G8 a0 v% d# A! T# m% D
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
. u$ R' l1 s  q  ZMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) C9 o4 G4 w* |& u: i: U2 q** Configure the McASP pins & Z- S6 E# b/ f6 d' s) K1 h; @  n# K
** Input - Frame Sync, Clock and Serializer Rx( S4 V% j9 h; L1 m. }
** Output - Serializer Tx is connected to the input of the codec . ^5 _6 R* ]9 }+ U: m1 U
*/
+ y, a  d+ E6 b! C  yMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
, d" ]. y( H. M0 n/ W3 ?8 @8 n3 kMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ F1 C% ~  n: E( h
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
. ~+ h( ~$ O/ f2 r+ h: ]$ l; k| MCASP_PIN_ACLKX- T* t0 e  T# u) p5 Q& K, K" H
| MCASP_PIN_AHCLKX8 H' O2 I8 J2 A+ \& O( `  G
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */1 O0 |3 ?, |* ^: h; s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR $ S; a: z# Y  t9 E: w
| MCASP_TX_CLKFAIL : F2 J& q& P7 p) l9 T
| MCASP_TX_SYNCERROR
- y  \& }5 e" T; O  |3 |: U5 D8 k| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
8 i9 q, x, A* u7 d# ]* l. e9 Q| MCASP_RX_CLKFAIL
0 Y- ^$ h6 I& q( _& j5 z| MCASP_RX_SYNCERROR 9 m, D' ?, ~' X* R3 ^
| MCASP_RX_OVERRUN);$ ~; R1 b9 j0 z$ l9 c! ], G. ~
}
static void I2SDataTxRxActivate(void)  O  @/ S+ o( `4 s9 q
{5 n1 E: p5 q6 C
/* Start the clocks */
; Q7 @% j& p1 P' B. R! s' @, d5 lMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 s8 i; [5 a; D
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 m* A2 N2 V5 K3 [3 P" k' _EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,9 e+ j  |8 {9 W* s5 |6 `9 C
EDMA3_TRIG_MODE_EVENT);1 O* Y  z$ f, j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ; T" h5 A5 [! b- h
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* Q! r& P* v1 c: D2 `7 pMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
7 X) e) U4 R. H- ~McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 _" ^# P- N5 F" r, ~. j4 N0 Fwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. d) J- r5 Z2 X) B4 rMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);" V0 g8 \  K( |0 ?! P
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: u# a$ P; S, v; r6 ~}
) x/ J  S2 h/ x: n  G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, J, E' l0 j0 n* d: B; }' L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-23 23:18 , Processed in 0.043095 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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