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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11436|回复: 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,
: X% Y, a: p: w+ ?# O  ninput mcasp_ahclkx,
( h9 Z6 C' p0 t9 o* o/ ^input mcasp_aclkx,
8 w8 x) I2 W- s2 Oinput axr0,
* [. W8 R  G- B5 Q# J
1 x3 q% }2 V7 I+ Voutput mcasp_afsr,: V; B3 @2 d9 x' Z3 T: ^. s
output mcasp_ahclkr,8 h0 U. Z, V* E- r" X  d
output mcasp_aclkr,/ Q4 I# Y# b; _4 \+ h5 s' |
output axr1,' S8 F0 c& t3 w# {; a+ e2 Q
assign mcasp_afsr = mcasp_afsx;
% b. I! H4 v4 K. p2 z: s- Kassign mcasp_aclkr = mcasp_aclkx;
& v5 F" [0 q8 L' `4 ?" f7 \1 ~# n* Jassign mcasp_ahclkr = mcasp_ahclkx;3 f; T; o: ~" q" r
assign axr1 = axr0;

6 m% H" H/ p6 E, W5 }# \$ }+ s. _% T3 y, H2 J/ F; v  `, s3 H# f- l
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 E) ]+ C' I' r7 }2 `5 B
static void McASPI2SConfigure(void)
  F2 A' _+ f8 I{/ b6 {/ F1 k1 r9 X
McASPRxReset(SOC_MCASP_0_CTRL_REGS);  s+ V/ u2 C+ E- ^( e- u( k0 x" L2 o
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */: v0 f6 j8 F! T; z# G- H
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);+ E0 }+ }- G3 i% k1 }4 U7 r
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! c+ L- ^3 a) a- h8 N& d5 @McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 A/ V" a$ d5 ?
MCASP_RX_MODE_DMA);
* l* m) v/ E8 a6 q5 ~McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 D7 W/ U+ u. ~% X! n
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
2 U5 d* z6 J! p2 hMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   y( R( Z5 u. o/ e1 C" m
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
( ]/ u  w* _4 i: V+ PMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 F- B( {" s4 ^; v- B) \2 @/ FMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% g) ]) |1 D$ K- f! p4 H
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);% I2 s% g. g6 l9 n+ `, O$ i
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
9 C2 C! V. u' ~McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,! t; q; u: ]+ ?9 s" o
0x00, 0xFF);
/* configure the clock for transmitter */  F1 r$ f: q) h, H) ~6 a: A) L
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: R# Q% c, S* c: T2 U6 J
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 D+ |  z" i5 _, }! C5 WMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,4 x* W& v8 }1 i4 {8 E) v& w% B
0x00, 0xFF);3 z$ b" g1 |% y9 O

9 G+ a0 a. K' S- y, p0 o6 F/* Enable synchronization of RX and TX sections */ * ]6 G) g: g# t4 y) L
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) W# p' ]' D6 v$ m  J$ o3 v3 [McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
( h3 ]4 \0 _3 UMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
+ f- H( ]& i: w; C** Set the serializers, Currently only one serializer is set as4 ^/ `4 q2 q2 P3 P& T5 a
** transmitter and one serializer as receiver.4 ?4 j) r2 ^/ s% h
*/
) D* v  N% _: H% E7 y0 g" PMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);5 v. u- B/ H# M4 i; P
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*) o4 q  I& Q; }6 W: x
** Configure the McASP pins , B# Z4 C1 q* m1 q. A2 Q5 B
** Input - Frame Sync, Clock and Serializer Rx0 T2 E2 U- A0 x. H( _- D
** Output - Serializer Tx is connected to the input of the codec
5 O! [$ j' _8 ^+ {" L' O*/
; J/ C3 _# N7 @* fMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 g; q) x8 p& L
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: t0 H/ a9 j* O" X: @) U( u( [. |
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  D$ g% h, E% V3 q| MCASP_PIN_ACLKX* S' A# `) h0 R2 l3 F- p7 n
| MCASP_PIN_AHCLKX* v6 g) g$ a, F, H
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */: m0 A/ q) S, ]5 h( n
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : Y! _& E* t! T! e& o1 y3 y
| MCASP_TX_CLKFAIL
2 h5 ^1 b/ U' I" I| MCASP_TX_SYNCERROR
* q' j/ a$ m5 j+ w7 G| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 9 I- U/ j# J! d" B0 C6 M+ h
| MCASP_RX_CLKFAIL
! W# L+ K. V' h| MCASP_RX_SYNCERROR
( Z: u: R& M1 R| MCASP_RX_OVERRUN);5 U1 k; t3 _2 ?) y/ C" o; l5 `
}
static void I2SDataTxRxActivate(void)
; p/ S6 z+ p! c" L7 s{
, |( s1 n! I+ _( E. N5 M4 ]/* Start the clocks */' h# ]- O$ N7 B# p! w8 Z5 M& l7 u
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% [: V) s2 l5 W2 Y9 M6 o9 p# J
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */" b5 H% O6 E. B2 v8 F
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
5 {( R5 d. c( b$ ]EDMA3_TRIG_MODE_EVENT);
- |, G; r3 k2 v8 y, ~EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 a, S( o3 b+ ]) P
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: ]2 C! N" y) [! v/ LMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; x/ p5 D0 w. p; e( t  ~  H8 uMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */; p3 E. k/ w$ ~+ G8 j
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */7 R0 D2 x- e+ V/ f' N7 P
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ X$ b. q" K- z; _6 G& s; N, o
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 \8 j. T, _9 T3 C  f}

+ i) P5 s8 Q8 o) S! n* f) p6 `
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
' D) A% `1 M! S# A7 ~  s6 @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-5 10:02 , Processed in 0.039159 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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