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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9682|回复: 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,
9 X, y! j* P( |. O' [# h0 S8 pinput mcasp_ahclkx,+ {' R( w  R& o+ ~# n/ I. n
input mcasp_aclkx,
) U2 X1 f5 [+ c# Y+ m( Iinput axr0,& x7 {2 m9 U6 ?. K
: f& ?  E9 z0 L8 {2 Y
output mcasp_afsr,. [+ X3 q0 v5 ]- _! N
output mcasp_ahclkr,
9 K8 M/ X, [8 s3 {) Soutput mcasp_aclkr,+ L( Z; N3 s- e
output axr1,
( ]1 d5 c8 d6 {$ y& a
assign mcasp_afsr = mcasp_afsx;/ w; d  ^" H4 v1 L( `
assign mcasp_aclkr = mcasp_aclkx;8 ~/ I+ m( c5 f- K/ j" L1 n1 y
assign mcasp_ahclkr = mcasp_ahclkx;/ a% q1 y7 U0 c' Z2 R4 k
assign axr1 = axr0;
, V* p' x# t) v$ v4 f9 J

: Q$ F: g* J6 i! @( ^: N- `4 z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

: B+ ~/ J. y! K0 |. J
static void McASPI2SConfigure(void)- O- g4 O" I% y2 U. h
{9 c* B8 a! `1 U2 f  H5 S
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  ~; V: ^& |" @7 N4 y0 z% A! TMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' x5 {' k# U5 o" g+ S) o# p5 T% }McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 @' d( a& i# F9 k
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */, N/ K1 X6 l) t( z. H% C% ^
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: N! m- P, f1 i$ D
MCASP_RX_MODE_DMA);
5 B6 }5 \, R2 E, H. ~0 D  ]# _McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 W% e) t. U; ]' I$ H$ v) w, @5 cMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 a9 @: y$ g. H/ cMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # |4 X1 w# B9 A1 L% ]. H, U# {
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  e' w4 u! I1 p. ~7 V2 n! ~. T0 c/ M
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, $ g# Z! z6 \; K+ ~: y2 A: X
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */' ~* F# [0 _% W
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
- w/ d: a1 `$ P6 }McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 D0 `- `5 i! T6 s
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
* {+ F* n8 _$ H3 @0x00, 0xFF);
/* configure the clock for transmitter */, a& _3 U# A% I$ J) |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
& a  {% F5 l2 @! Q0 gMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& g) ]8 q3 U4 N! b7 wMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,/ j3 i$ T4 u) P, E$ m0 h  o2 `
0x00, 0xFF);: k9 a. ?# }0 L% N9 p9 R, Q
  c9 I9 i( i5 U, S4 t
/* Enable synchronization of RX and TX sections */ % ^+ X1 c& f( W; C: Y
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
/ m: t" a* ~2 m5 M6 JMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 p7 _1 Y5 a- \3 f3 P( z, n' [- kMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 p% W9 ~4 ~+ b% q( o% V. O& U
** Set the serializers, Currently only one serializer is set as1 N9 Y9 e! N( O, E/ E
** transmitter and one serializer as receiver.
8 V4 g' H0 p* c, |; ]+ }*/" X; F9 q0 D0 j7 Z: e- g
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
  S' K" O/ Z3 R% P) g+ [McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  r3 D4 T: Z# R% Y+ K/ N
** Configure the McASP pins
! J( @: B- A0 X" p1 w2 m! I** Input - Frame Sync, Clock and Serializer Rx" y* p# _8 W/ o3 S
** Output - Serializer Tx is connected to the input of the codec
- z$ W+ j$ |) m*/
: U9 K" A* i1 U( O- [2 m+ }McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 z! b& g- i7 w6 ^7 l+ SMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
' o7 d" z" i0 j" H0 x/ `McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 j, l: x& b0 h) M: a( v7 H
| MCASP_PIN_ACLKX" ?: t! p7 f+ U2 G& x& p
| MCASP_PIN_AHCLKX
! \4 Z, w* y( T$ V| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */& g/ t9 }' c8 W/ z) E  o
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 B& _5 Q6 I  J+ [: k: ^| MCASP_TX_CLKFAIL
+ m. `* }& n  C# P5 `| MCASP_TX_SYNCERROR
/ [& p2 O8 q3 j' V4 G; C8 ]$ @( I' Z1 z( X| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& }6 t5 |0 K( H8 q5 v# X  \7 c  \| MCASP_RX_CLKFAIL1 [9 v# O( H7 P0 R% D/ ?6 K
| MCASP_RX_SYNCERROR . y3 K# X+ B7 V
| MCASP_RX_OVERRUN);; M4 u6 {8 O4 v. h
}
static void I2SDataTxRxActivate(void)% z' Q2 g* r/ t( E2 N) l
{% \# i* d! M. a& Y0 {
/* Start the clocks */, @" U3 f" }! K4 L8 ?
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% j5 T9 j$ y1 k  Z
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. r1 w; O" j: A% z: V, F$ x
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, w9 }0 y2 Q5 A# y* O9 w# Y8 V
EDMA3_TRIG_MODE_EVENT);
% D! ^7 Y, O, I* B" g: c' TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& l! k# r9 v& H  MEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
4 w  V4 r0 E" Y  M2 u/ h3 }% s! jMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 o+ j' B: K; g8 K
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 K8 ^& m, l& N# twhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ o; E1 B9 A; Y  R$ l
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);& |1 G: ?3 \/ O% X: k
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);' O2 o) `. J; K; F, P0 d
}

8 F& _5 H9 ^' `, x6 X$ {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, L8 A) x. [. Z3 N9 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-17 08:41 , Processed in 0.056579 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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