MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9144|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
$ [) C9 x) v: j  I) J6 D+ A9 ~input mcasp_ahclkx,1 r2 G- x* X( i% k$ n
input mcasp_aclkx,
0 y  z# {* w8 Z: `: sinput axr0,
6 z) X$ S; P, y4 J1 h  W+ d5 S7 E+ [
output mcasp_afsr,6 i0 H3 ~( v! M* f
output mcasp_ahclkr,
, \2 d9 N1 q1 Y) I& K3 _, Boutput mcasp_aclkr,+ {  |  s% ~) T
output axr1,6 `9 p0 `: }& N0 j
assign mcasp_afsr = mcasp_afsx;
% Q% \1 k) k8 T0 ~; I) M2 wassign mcasp_aclkr = mcasp_aclkx;7 B2 k) B+ M2 x/ l
assign mcasp_ahclkr = mcasp_ahclkx;
3 u3 a% o2 z1 Z/ [' D; @1 N+ ^+ ]assign axr1 = axr0;

' i# b' Y! n- Y* H* H0 \
- W  r. Z$ q/ @7 C8 C
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
, F+ j' w* \0 x/ M+ b1 M# M
static void McASPI2SConfigure(void)3 q& _9 n1 l$ B
{) r+ c' {/ w& Y' B
McASPRxReset(SOC_MCASP_0_CTRL_REGS);! V3 \* l3 T" V: m" [( V) ?0 F2 |4 `
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* a1 U% f  A, V% C, n7 |  x
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' |: e7 c* T6 c' i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 f, {7 h4 F, j& o
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ b7 x5 E  G: K' [MCASP_RX_MODE_DMA);, r# z( M& ^& d
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 Y9 t% ]" }! N7 w( G" ?- XMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */6 D5 @3 h+ X, s6 J3 ]: w  L. K  m+ s' l
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 0 Y, {* f4 u  \" H
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
. f- ^- c0 R0 f8 P6 }McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- C5 U- \. ?6 A) vMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% I% h5 @2 a, C' K) B0 T
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);' T" _  e3 f9 L6 }2 s( i
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
3 ?3 S1 m) [, RMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
1 {. Z& _# t& ^" n% }8 v0x00, 0xFF);
/* configure the clock for transmitter */
; t: l, J' X- C) h6 H# Q2 W. n5 m3 _McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
0 ~2 J" m1 m& h' Z9 gMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! E+ c( u& J' h  M8 s9 m
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,4 _* F. V6 q: g
0x00, 0xFF);1 r  A8 e0 |* b( T

9 u  j9 r. C# B: M/ r8 U/* Enable synchronization of RX and TX sections */ 2 P3 O3 _# T9 G
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
0 \& `4 `: P! f& [% |5 v( `/ mMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);4 Q* }' m9 D* j) x7 ?
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- Y/ [; ~9 Z; V9 p5 f** Set the serializers, Currently only one serializer is set as
% J2 g: f! e- X+ Q& Y9 c" E: M** transmitter and one serializer as receiver.
6 i5 o% W! s2 ~*/0 L9 v1 ]1 h: {( F( ^) K& Y
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 {1 a3 a4 U9 l1 O2 c) S) w& J# dMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
1 \4 K) {6 V/ {4 _** Configure the McASP pins
. q9 m; h  o3 X8 |. ]** Input - Frame Sync, Clock and Serializer Rx+ e; C: p' K5 A
** Output - Serializer Tx is connected to the input of the codec
# m2 n- A- r1 F8 U*/
5 e. K) G. m0 [0 v2 J2 I8 SMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
: L4 m  H% N- a7 K/ k2 GMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 [& s3 [( [" M: p; r
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX( `. p4 d: U9 Q! K
| MCASP_PIN_ACLKX
( U' x3 C  ~8 _# V: }: n+ e| MCASP_PIN_AHCLKX
  `, e# u5 _# x1 i- O* u/ c| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. T: _5 N4 w" {' a; a" e
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
( _, r, D# o% D( ~| MCASP_TX_CLKFAIL
* l0 ]0 ]  w; }1 k' X" F# F8 Z4 l| MCASP_TX_SYNCERROR1 |( L, i0 E# T( }" n/ \1 I
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: a5 A1 V0 e- r6 m3 n3 Y| MCASP_RX_CLKFAIL
2 d; u( N9 i# [( [5 F| MCASP_RX_SYNCERROR ; i. z/ G' W( ?  I
| MCASP_RX_OVERRUN);
) i+ J# k( a# K2 n. p$ U& Y: J1 _}
static void I2SDataTxRxActivate(void)
4 T; D% F/ G" j! X+ p{/ g: h  E9 H( Q: k8 u
/* Start the clocks */: u& o" ^& t/ n1 `1 P, {6 v5 Z, |
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 D9 _% s! z2 j2 ?5 ]8 jMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
+ M9 H" u3 N5 D! e( LEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; W2 v6 H" u3 @5 w* H4 gEDMA3_TRIG_MODE_EVENT);! s3 w9 p. M) E3 w  Y; c7 l# C6 Z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
8 I0 V: w3 J# ~# @EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */4 P# T9 |: D, c: S* n# Z  g
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% s. U) b9 c3 V* B  C
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 L; Z- K) z) I) dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% m9 \% o+ m3 c, G7 U* F6 u
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
/ E$ a1 q$ n& {! o9 qMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
3 E/ |$ n4 g0 V2 t& I% |! r) ^* ^$ [}
; w  f; z6 A, \$ P* Z& b- B7 r4 Z) u, S' \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
7 ^, Y3 }' k4 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-22 16:02 , Processed in 0.038923 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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