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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10385|回复: 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. h6 {5 e2 `+ E! E7 d  Z4 C0 R; A9 Dinput mcasp_ahclkx,
) P& R3 I/ g' h3 |input mcasp_aclkx,
& |  r! i9 C( w4 s# `% _, Oinput axr0,
9 R' J5 m9 r+ W: \: y# @* W. H5 w. q
output mcasp_afsr,: l9 T  R% F: H
output mcasp_ahclkr,0 }' e& @/ K, `6 g( p# d* h0 Y
output mcasp_aclkr,1 m/ B+ U! A7 n4 Q/ v2 `+ j) ^' E8 b
output axr1,
8 g# n" m) V# f. ?
assign mcasp_afsr = mcasp_afsx;
6 C! V: `8 J- i8 _0 k9 X. a4 vassign mcasp_aclkr = mcasp_aclkx;# L! g, p" n7 ~# I
assign mcasp_ahclkr = mcasp_ahclkx;
6 K% O7 [& a( Vassign axr1 = axr0;

( d2 }7 u( w; [% A; q6 j% k
. T7 @! ?3 U' O
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 R) G/ M6 X2 ~: ^3 b) k- t/ r
static void McASPI2SConfigure(void)
+ n7 \+ C- y( V$ p/ `+ g8 `{
/ @5 l& S# z0 A' W3 I1 C3 L1 CMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 Q1 d6 |! T% h" W1 O+ ?5 Z9 X
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */1 q- ?7 z( ?" E8 X( F
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! h0 {, y) j- t' W) C% dMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */2 |# `2 J: M: r! _8 y  |
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# @1 q# @! R: EMCASP_RX_MODE_DMA);. d9 Q7 b8 D$ V4 M
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% i' Y6 ^- a, [3 u1 DMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
! n1 O8 e2 D, pMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
5 D; B* J: z$ [5 n; w% SMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
1 Y7 |4 P% G  [McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 e- o- P, V  q, IMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
- u$ l* q; E* LMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 V9 h5 L7 t3 x
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & o9 |- W& d4 d/ p* T$ E! k
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,) g6 d: K% Z2 l, f0 P3 v7 h
0x00, 0xFF);
/* configure the clock for transmitter */
- w1 A7 X, M$ b( C& x1 vMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 |3 ?2 X' j6 K. ^
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 5 f+ g! F, r; g! x' d# h
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- S' [/ Y0 I; J  M" V7 ^% D$ K
0x00, 0xFF);
. k; Y' ]7 |: Z  \4 p0 b& t) z! \) v5 O8 {; x; a, j1 B0 _9 M
/* Enable synchronization of RX and TX sections */
6 s$ ?, W% B; Z! o  {* RMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */- N' N  t/ }$ w* v( y3 b2 B
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);% e1 O9 \/ P; q
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
# H( A4 }9 |) |: I) V** Set the serializers, Currently only one serializer is set as6 I8 J3 o& S, l# C+ E5 Z: y) `
** transmitter and one serializer as receiver.
$ Q$ \/ M( g1 d' i: x, a*/
' E' E9 z. K% ]! E8 O5 ?6 U# OMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
$ R# S0 x% P0 MMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& W* s* P0 Y& `+ y! f# k
** Configure the McASP pins ( y( ^1 o8 H2 I( X) f0 i
** Input - Frame Sync, Clock and Serializer Rx- X5 b% s, r/ \" k# N  E
** Output - Serializer Tx is connected to the input of the codec ( }3 f% F, H7 m
*/+ p$ H1 k6 L0 j: c8 G# b
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- s! g* o1 {7 \: [/ e9 w! hMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  B3 @4 _6 E' z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
: k# C0 j! \$ ^) b7 l, z| MCASP_PIN_ACLKX! J4 {( C! }5 z$ R& }/ p
| MCASP_PIN_AHCLKX' O+ \! q3 F7 w
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ b* l/ |$ A% N5 W1 A4 aMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 D# i7 j9 h  b3 x| MCASP_TX_CLKFAIL
# e0 T! r' f7 f3 w8 `; k  c| MCASP_TX_SYNCERROR
# x9 u/ [* t; ?/ H& r0 ^| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 3 q( R  J- _3 f8 j4 Q
| MCASP_RX_CLKFAIL
! v0 C( Z" Y' H0 r' _3 Y. {| MCASP_RX_SYNCERROR 5 N! \8 X) c( w; B8 r# l3 E
| MCASP_RX_OVERRUN);
- L( K: Y! N5 b! x' c}
static void I2SDataTxRxActivate(void)
! J9 d, N+ j5 k9 O: R{  n, `' ^/ P8 i8 X2 t/ O5 r
/* Start the clocks */
' \& }& o- Y9 L0 E% vMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! G' N& L: {9 p) r, d
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 M; h, Y. i* j: W3 K9 D1 GEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 e4 C, O" z% y2 a) HEDMA3_TRIG_MODE_EVENT);; K8 d& z- h9 z8 @8 u
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / @* Z7 d- q: z- g8 ^
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */* t) w, ~0 _! g) [: K$ b
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);/ B' s6 m  ^4 q+ E1 ^6 ?4 x
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
, Z% B) V+ V% |* O' G0 Jwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */. u& U$ Q" R+ B0 [: u
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& D) e: N$ g. H4 Q, KMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 j% R/ w9 y; x5 z9 _& N1 }}
0 ?( A( `# W' o0 E4 a: P! Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
9 a. U/ I' M4 h: m, ?; @' }2 G# B' I0 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-5 10:22 , Processed in 0.040268 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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