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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
# |$ ^7 L# l4 L. Linput mcasp_ahclkx,
1 K! u; t3 a$ ]$ |8 Q3 minput mcasp_aclkx,
% X2 o; a! y* J: M/ Ainput axr0,9 h, ~/ M* r" P; `$ Y

3 L+ V% ~+ }* M  C; f% zoutput mcasp_afsr,  q- n$ c8 r! C5 K0 d7 p9 Y0 s2 {
output mcasp_ahclkr,
0 G' X! n' I" [+ ~4 i% `output mcasp_aclkr,
, j* C+ z  c% |output axr1,/ k- n) G+ J; U( w4 ~: k' g
assign mcasp_afsr = mcasp_afsx;
( z, B. V2 F" M' V& \assign mcasp_aclkr = mcasp_aclkx;' j8 N; V5 D. l" d6 g4 L! T
assign mcasp_ahclkr = mcasp_ahclkx;
% l5 U0 F# i- e8 Y# S5 eassign axr1 = axr0;

8 a( r" p  b( j  V
3 `  F( U4 [) [7 b, j7 q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 y3 Q0 h( v: l
static void McASPI2SConfigure(void); p) Q" F3 V" G6 \& _+ U% |
{. d+ t& d  a# A! J4 I
McASPRxReset(SOC_MCASP_0_CTRL_REGS);( j1 ^' y5 [& {( N* Z
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */& E7 u' @/ C  q
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' {# r! y: P4 T# B3 @8 E$ pMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# N( o; Q' z( G- n" u* t
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 t5 v8 w9 Y$ ]1 M. g2 f* WMCASP_RX_MODE_DMA);$ A  b  ~9 N& a1 q
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) `" e0 y  A, N& I2 l; LMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// F# j9 f$ s+ V" H) O7 L7 X
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
. [( v  ]2 V. `  o  ^( ~9 NMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
$ n, l# t! E' Y: d( EMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; j7 l+ U# d* ^# S
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
6 j$ V- [, I' u( p4 @McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 M" o9 \% r4 g, H
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 t9 M, W# ?1 {* `( \) x
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
5 u2 Q; l$ \; v0x00, 0xFF);
/* configure the clock for transmitter */0 K0 i! b. m, R) L% s- z) a' R" A
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
* m; v- R& R' ]& {0 `McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
, K; U+ S- m8 q1 l" W) ]McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 r8 F' P* }" ], ~* v; a" X$ X
0x00, 0xFF);! ]! b! b2 @5 N4 o* U0 `4 q. l1 x
9 r' U9 K' Z- }, ^! v! J+ ^6 m% t
/* Enable synchronization of RX and TX sections */
) C/ O9 D4 \: wMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ W6 a( T6 o1 J2 N1 k) o
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);6 O# U7 h1 U0 I5 f; X" Q
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*& V$ Z9 g, x, [6 [% G# E
** Set the serializers, Currently only one serializer is set as3 J5 u5 N3 @; K" f4 V' |
** transmitter and one serializer as receiver.
' g& S! ^9 N" W9 w4 g. l*/8 N; N- W: n5 x  e) i
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);8 y- N5 r' C& a, L3 l& {/ M
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 o) Z! v/ A6 n) g! a) g1 n** Configure the McASP pins # N) \2 Y9 v' K& b
** Input - Frame Sync, Clock and Serializer Rx
0 t( E; L- }# _** Output - Serializer Tx is connected to the input of the codec
5 H( P$ K) M9 t/ |; G' a*/9 J9 M2 X) M% \$ U
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) Y- E6 D- M0 F& q4 gMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));6 _; p" \8 n' w* b
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) h' ]" ]1 s* k. D7 Z% _| MCASP_PIN_ACLKX
# V5 n2 I% u: K2 {8 N5 ^) ^| MCASP_PIN_AHCLKX8 L' G" F6 e; u2 z" j& Q" h
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */4 d6 L2 k2 U' V, q, _
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
" S( c  E0 q* @| MCASP_TX_CLKFAIL
' b. c# `) I  `2 X" h| MCASP_TX_SYNCERROR. E$ b  |& Z' r8 p
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ o0 f1 l( n/ D0 |2 S) y| MCASP_RX_CLKFAIL
2 d+ V) y8 L! W: ]( O/ }) g| MCASP_RX_SYNCERROR
# L) v; O: ^+ U1 Y0 q' `| MCASP_RX_OVERRUN);
  L) R# g9 a( N1 Q/ `3 [}
static void I2SDataTxRxActivate(void)4 K& }, e& V/ m+ g% E8 G
{2 ?) N  ?, D* W0 U9 ~$ ^6 A
/* Start the clocks */9 z$ J  N. t5 D9 _) p
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' Q5 j0 y/ T* f$ q5 x4 }McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */+ _8 r9 @* Q( R8 {
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 I3 L$ y7 P. {/ w0 w* \EDMA3_TRIG_MODE_EVENT);2 E9 n$ v* y9 T4 W1 a
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
% J+ ^2 `: A# uEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// D2 I: Z/ s6 G* s' C& y, G: R
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);7 A& W9 d4 ~  W8 }+ ^- n
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
4 O0 [: ~% ?6 [9 U0 Hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */& t. h( ~& V( o0 @! m
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
% z- N) I5 T  l' \# P) H. u1 g. M$ A6 iMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 B3 G$ R" H1 f7 L; q! M4 w}

( Z' v# i, X- {0 q5 U8 v! ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 A8 n) A2 J; n% U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-8 22:32 , Processed in 0.040444 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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