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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10571|回复: 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,
" d1 K' q  \# G$ u4 H( k( _) D, ninput mcasp_ahclkx,
4 u$ q  S+ l- `0 [( u7 Tinput mcasp_aclkx,5 }$ G9 ^( E9 G
input axr0,
( M$ f3 g& G' V( q' s/ z9 n4 |3 s% \, t8 x
output mcasp_afsr,
0 C/ Z+ @  M3 j) U" Eoutput mcasp_ahclkr,
% c: D) y  [! o3 m3 ?$ Woutput mcasp_aclkr,
- k+ n! R- Y" b% G# R- y% foutput axr1,
( _1 _( I. i  ^  i, y6 s
assign mcasp_afsr = mcasp_afsx;
/ V' m4 X/ y$ q; T. v; Q2 Yassign mcasp_aclkr = mcasp_aclkx;. k: m( S% P4 B8 Y7 ]* I
assign mcasp_ahclkr = mcasp_ahclkx;
$ A4 M! W2 T% F) M: Nassign axr1 = axr0;

5 {/ W, x! Y* ?& M$ g2 ]6 A0 O' F: I! P) [% G' P
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
7 n+ l! M& T5 I1 y
static void McASPI2SConfigure(void)
& F. m1 K: B, z6 `7 J2 `1 X$ H{3 Z$ E3 C9 O4 f5 R
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
: m) k7 L  l2 W8 o5 B# m+ bMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; x0 n7 d( l% W6 \5 S6 \McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
) ^3 E  L" _# ]* h: SMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* `2 [0 b5 ^) w3 a/ A- ]5 E7 KMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  ~6 e& _8 @* U5 a( [! O1 U; ~
MCASP_RX_MODE_DMA);% E! F1 L9 m/ m3 }% {% u$ D7 j8 |
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 L2 I9 a( ?4 d+ X' h3 H
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ R0 ^  q+ u  B; lMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " m$ W! i9 }" [, M$ V& y) S0 _
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
' B' E/ p0 h- t- k+ s5 [0 A3 jMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 o+ \/ t& b8 i6 y. M
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; i$ w! ~0 m$ g8 [  v$ f( x
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, O: m! U5 Q: Q* ?) c1 N
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! t7 \" z  |4 S! f% B& M) [" }/ tMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 ~1 D  Y$ w, m- z- p4 k9 E% f% x
0x00, 0xFF);
/* configure the clock for transmitter */
# T1 {; e# l- F7 jMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 c. y3 |/ ~& H. K6 |McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : ]: f+ W- _1 O  O7 H) y
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
; c1 _& z1 ^, y0x00, 0xFF);
4 V  i& y# ~5 L* y" V) j3 x& F% H1 j+ S
/* Enable synchronization of RX and TX sections */ - M1 n: R# `7 s6 k+ ~. Z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
( f* S$ i" o- d( b$ Q- ^# [% K. @McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
8 z( _" b3 r0 zMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. h% e% V" G, S  b3 @
** Set the serializers, Currently only one serializer is set as
  U3 Q  r( q, a2 v0 I$ o$ B% q+ D** transmitter and one serializer as receiver.+ F2 \9 l8 q+ [
*/
9 J: j. I  U2 B6 d" t; mMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# z- Q! J1 j8 x5 m  s( v* c8 ~
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ N& l3 {6 w8 J& n1 ]/ |& n1 z$ N
** Configure the McASP pins # v4 a  G2 Y$ k1 X# w
** Input - Frame Sync, Clock and Serializer Rx
2 e, `- K* n- F3 ]** Output - Serializer Tx is connected to the input of the codec
6 C0 V) s; j% F. B8 e/ y0 G  f' H*/% a1 I- p) O: A' k" ^* U. k
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, w2 p/ R% F0 j8 H- O& F3 ]6 _* q8 H
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, q. c) f2 N" `9 g) u% jMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
" {4 b. D- m& r( N  O3 `5 g$ H+ E| MCASP_PIN_ACLKX
2 k) [) }9 X+ ?9 e| MCASP_PIN_AHCLKX! a4 j& ], `! d; e, C) m
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
- A, n0 @# V5 C: v4 [1 E/ XMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 w! s: v: S1 F# |8 o| MCASP_TX_CLKFAIL
% \3 a8 r$ r0 F- x. @( Z* v- ?4 E| MCASP_TX_SYNCERROR$ [. S0 s# p! N9 K+ u- c/ f! H
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - X' W7 j& l$ U/ @' X
| MCASP_RX_CLKFAIL! c/ i, o: e! Q* _
| MCASP_RX_SYNCERROR 4 }% j5 |! }& s  V1 @* `
| MCASP_RX_OVERRUN);
6 T6 ^; Q5 J9 ^+ T" I  {/ _! y! o' {}
static void I2SDataTxRxActivate(void)
2 P: |& Q) F( ?* d. X5 A{9 @: i3 M* \; U' C8 f
/* Start the clocks */$ n5 X! s2 m4 E" @, x# m1 u' J, Y" B
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);) k" ]# p4 k. l: ], j
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
: N5 r5 e! j2 ?" ^, P$ E- e8 K; r+ [% DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% L4 W6 N- C+ sEDMA3_TRIG_MODE_EVENT);
: {+ Z( j5 u8 q9 o: a+ cEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 4 g- R, ]. A, B+ z% V& H' k
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
/ [3 P, i  \. g$ Q# G4 \McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 s" M6 U# P0 [$ Z1 YMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% t$ s4 l( U, |( @- iwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
6 B! M. q0 V/ _5 _8 W1 ZMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
  p4 {1 b( X' p* t  l2 GMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
  R! }3 \7 h; |1 q  w& n}
& x1 }* e; i; d9 G- v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
& y" m5 J/ F& d) [, |2 o8 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-10 01:47 , Processed in 0.053964 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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