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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13095|回复: 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,- ?7 r7 t, z4 a6 a
input mcasp_ahclkx,
( P. |- Y- ^" A" D5 E7 Z# dinput mcasp_aclkx,
; r! T8 X: r! Qinput axr0,
3 I3 E, T' i3 r1 Q, e  I8 i; A, {. K! ]( A0 y
output mcasp_afsr,
) ~6 c5 O$ Q# j( S, houtput mcasp_ahclkr,
' y0 q$ t& N( r! P  r% Y. h/ xoutput mcasp_aclkr,
: B7 u9 A! M* o* C) k/ u2 K; B! ?& ^2 coutput axr1,
% T) x% A3 |0 n6 f
assign mcasp_afsr = mcasp_afsx;
: s8 E- q6 V! g- Wassign mcasp_aclkr = mcasp_aclkx;$ f. S7 l1 g! T# E# A5 f1 L+ @7 ]% F
assign mcasp_ahclkr = mcasp_ahclkx;5 p9 v: `* ^* i# t/ v
assign axr1 = axr0;

, T, m. R, ^9 X1 l+ w$ B; {1 Z( r, p5 i4 I8 n: C
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ h' l* v. i/ x! d/ K2 j7 u
static void McASPI2SConfigure(void)7 _2 B) X* D- O3 y
{
" W; i& Q/ D, J/ O' fMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
3 _5 G' J# m2 W5 SMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 O4 k; Z9 n& ?  W7 C( eMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 g2 V( O1 J) n" Q% r
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
  G4 a+ f! d7 NMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 m; h% b$ [$ O* s
MCASP_RX_MODE_DMA);
% w5 l7 p, u" r7 jMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- A- c: v+ Q+ j8 g  IMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */# w8 }; {" U, `" C% |# f
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 P, o, t. q+ L% l* {1 d: U
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
( _1 w; \+ Z1 T) T. d, B+ D+ g( zMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, $ ]9 T3 r- X) o
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */2 O: e+ C, J, q$ g. p
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
1 b! f' C* J* g; U5 t6 fMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ; n6 ?8 z! E+ I# @0 y$ u
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
5 w8 X# A  W- I4 S0x00, 0xFF);
/* configure the clock for transmitter */
' |5 J  A/ U! G+ NMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
- S. ?! Q1 }! W9 m  Z2 KMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) B: E' }. S. e$ IMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) S3 k6 E: s5 T. O8 }* k7 m
0x00, 0xFF);# n4 t. k" g: n
3 E' K' C3 G1 x2 |
/* Enable synchronization of RX and TX sections */ 6 j7 d. x# f' F6 E: E3 C5 U0 ]" z3 i
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) S2 H* r( t; A5 a0 GMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 Y' Z" r" K& `! O4 k# e' m
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*4 b) t! M7 x2 w) R
** Set the serializers, Currently only one serializer is set as
& S, F% G- S; I5 l! {: E+ h0 C** transmitter and one serializer as receiver.7 E2 G4 e3 U! W& X3 d+ k' R* i; K
*/
9 ~. _1 T, M8 M% }6 K) K  UMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' |, V0 A( {( z- D1 m* VMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*; i% v: z2 J. v8 V# T3 P3 S
** Configure the McASP pins
3 m1 ~/ e. I5 T" R7 v4 `1 ^** Input - Frame Sync, Clock and Serializer Rx9 w8 }6 E7 G$ M6 e4 o4 R# U# l6 v: W
** Output - Serializer Tx is connected to the input of the codec 0 q5 M+ C! F" V! A
*/
" ^1 F6 }. e, N6 G% eMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- r% q1 @2 v! _2 {; f0 P/ _- hMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));" L1 f; ~" c1 I; M
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX5 ^7 G6 I! r( r* [* f8 s; `
| MCASP_PIN_ACLKX. L, f/ Z: ?2 B$ l7 i
| MCASP_PIN_AHCLKX( r, g9 n& O# ]0 H) {5 g) R# ]$ A
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 |+ t: f2 _1 F, I7 c6 j. r
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ' @6 j4 f9 R( e% m
| MCASP_TX_CLKFAIL ; _, z) [" I7 @% [
| MCASP_TX_SYNCERROR
0 ~5 d% L0 Z. Q$ w| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  ^6 t8 h) x; X( ?" U| MCASP_RX_CLKFAIL
- X4 C1 b+ M7 T; b' _5 g# B4 @% C" N| MCASP_RX_SYNCERROR $ v6 y' {0 R/ O/ ^
| MCASP_RX_OVERRUN);/ K6 b6 K5 Q' z) `9 F4 _  P
}
static void I2SDataTxRxActivate(void)9 K, D( `* O- G) o: r8 K
{
$ `; K4 M0 t$ w* g# i3 |& S/* Start the clocks */# K% x8 f; S' a8 M9 b6 l* V; ]4 L
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 y+ I+ V, i0 SMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
+ \6 |( e: ]! zEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
3 y4 i& d4 r" o0 O, K3 l5 {2 @7 L/ VEDMA3_TRIG_MODE_EVENT);* U2 b- r# r- g& D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
2 D' [1 q/ K6 k8 p) {3 BEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, z6 N7 J+ X+ X9 {8 S
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
7 V5 j) `% B9 F$ q0 R8 S/ ^4 OMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */* B3 y. l# p- t4 Z2 X7 V$ b+ P
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */) ~& f# f; E2 m5 K1 g7 }3 g' I
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 i. p2 @5 d$ M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
) P# G& a5 n. x  C& x! `}
0 u1 ]! X% U) m" P6 M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

7 _1 j. a0 ]/ M! H9 U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-22 22:02 , Processed in 0.042478 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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