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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10912|回复: 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,. M  g* G  s% I
input mcasp_ahclkx,
9 x, j3 o- |' m. y. rinput mcasp_aclkx,
0 N# U2 A& r6 f6 {' @: X0 h, yinput axr0,& b" S) D( g: }4 P" d& W

# x3 X; K2 p# Voutput mcasp_afsr,
2 A$ E8 g: @7 {output mcasp_ahclkr,
2 y! I, a: i* A* A, G/ }. c  Zoutput mcasp_aclkr,
( x! N2 [6 j2 h" E/ L9 ?  y/ X/ noutput axr1,
8 j! C8 R9 E; [
assign mcasp_afsr = mcasp_afsx;: c8 I8 f; c: i) z+ h/ I
assign mcasp_aclkr = mcasp_aclkx;3 l. H2 [1 {4 K& {+ C" Y
assign mcasp_ahclkr = mcasp_ahclkx;" c2 Y3 Z" I  M6 {% i% u4 {7 M/ |  d' \
assign axr1 = axr0;
6 r! j5 L- D4 s' O. Z( N
2 M4 k! S8 A/ E0 x% G7 B
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 ?0 n) u# t" {9 v+ u
static void McASPI2SConfigure(void)' h) |$ S" E; S7 i6 d( E
{
, \0 ^8 X/ ^! a; w& z( KMcASPRxReset(SOC_MCASP_0_CTRL_REGS);' @& H; p1 M1 ]+ Y
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */! g- t4 l8 D* A7 T' \
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* {4 H. p$ {) N; `
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
6 ]2 ~2 u0 ~# p% M% f/ BMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: e8 {- F3 y0 R5 f# K# v  L$ JMCASP_RX_MODE_DMA);
6 _6 K7 n3 J: Z9 B& d- B) K; wMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 e; Q( }  x2 H% u, `% ?
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; ~& f9 _/ F" E9 |2 TMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 W$ q5 b! }$ ?: y6 k- M2 N
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 g0 o' R! ]0 Z' P$ q; [: |( U, {
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
8 {6 a2 L6 P9 ~! l2 C+ qMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 A2 G5 q7 O: lMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
; i  x9 n$ u* R  q8 P2 KMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
4 A5 X# W  Q) j& C+ g  z& b! s2 DMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
5 |' p3 L  Q+ F1 b, n$ ^+ Y0x00, 0xFF);
/* configure the clock for transmitter */
% r4 b* Z, e% ~, y5 }McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 j) u6 R1 l. X2 d7 s7 a7 |
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & b7 ]8 o% Y+ {1 L1 D
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, F8 D' B% B/ s' U
0x00, 0xFF);: `: {$ y" O  Y& e4 [. L
  V0 q  ~) ]3 M# L, c$ V& Q
/* Enable synchronization of RX and TX sections */ 0 r( O  R+ A* m9 t! k$ V( G9 T
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
6 @, S6 o) F/ m8 d. ZMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);4 p" U8 a/ F% `- b1 F/ z' u
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( O' B6 S% y3 f/ h" Y$ k( P! `
** Set the serializers, Currently only one serializer is set as6 X" e- ~) i8 P3 L+ @! x' I( V
** transmitter and one serializer as receiver.
4 b$ j. Q- N+ w3 }5 o) {5 z*/3 j! c; n7 [& A2 @+ `* u# N$ [
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 B' n0 l4 R  B5 V! R# {) F3 VMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
  V6 a. V% T1 a' ^1 d) f% L** Configure the McASP pins - ]7 a9 r- T$ l# n) [4 t
** Input - Frame Sync, Clock and Serializer Rx7 g! t9 A, d4 _* d: F& X' j: F
** Output - Serializer Tx is connected to the input of the codec - ~( I) n+ M1 U* G
*/
' R& H& O; U- I, N6 w# GMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 n1 C7 U. n) M" Y- f& X( k; G+ R5 fMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 h6 V; y. S% D& J+ {
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 Z7 \# K& M$ T+ ^' J
| MCASP_PIN_ACLKX; K. j- V, r: ]4 K
| MCASP_PIN_AHCLKX
4 r1 S8 g! X1 s4 n. O, O| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */6 ^/ @$ i$ w$ A' h  i. y$ X
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ) \' K1 H* R# Q
| MCASP_TX_CLKFAIL 1 k6 q2 D3 B0 d5 K
| MCASP_TX_SYNCERROR
. ]$ v: j+ g+ N+ i  g% g5 H$ V; H/ @. f| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # a/ n  T: }+ V/ Q$ P8 V
| MCASP_RX_CLKFAIL
3 ^) Q- r# Y; r" J0 k| MCASP_RX_SYNCERROR 1 V2 N3 g, T) D6 S6 F* f% c
| MCASP_RX_OVERRUN);
9 z/ o8 f0 x9 N" W}
static void I2SDataTxRxActivate(void)
5 W/ h: q% R3 _+ Q{4 y3 ]6 Y! I6 {9 G: g1 l
/* Start the clocks */
$ v* C. P- E* g+ YMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, e# e# Y: O( }: fMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */+ q/ b- J2 B0 W6 r' F
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 z6 Y$ N& `) _, i9 nEDMA3_TRIG_MODE_EVENT);  \& V& v8 X- h4 K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ' V! A! s$ P2 s1 o+ c/ l- ]3 {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
2 E; M, K; s" q3 WMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
) F- e* F& U) t, E6 JMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
8 h. J; Q$ ~4 p% p2 B2 Hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */& _1 O" L& ]& f& e0 H' ]& Q  g2 K
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
6 Y/ d) X$ m* c8 z" oMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 g8 ^7 Q1 \+ X6 q5 z2 C7 {( ~
}
6 d7 q8 L: q; Z' w" h: r
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 m+ R/ Q$ _  L- W* w! M8 k4 B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-19 02:36 , Processed in 0.039970 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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