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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10400|回复: 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,  u# M- o* Y5 A7 Q# O$ M
input mcasp_ahclkx,5 H/ }; S9 }: |% Q3 e
input mcasp_aclkx,
6 x/ [+ t0 a" ]2 D3 i+ U2 P( Uinput axr0,* o+ V! R3 _% [+ n7 i
+ z1 Y  H6 ~& o6 @8 Y/ S
output mcasp_afsr,' \, r2 \: H4 C6 E/ B2 m' b+ U
output mcasp_ahclkr,$ ]# B: D  Z/ d6 n/ r
output mcasp_aclkr,8 T! r/ q' i- s
output axr1,
( g! |+ |2 ?# E. g
assign mcasp_afsr = mcasp_afsx;/ V4 [2 s6 @) z6 O9 a% E: P
assign mcasp_aclkr = mcasp_aclkx;& b/ ]4 z* W% l1 j: H# Z+ x
assign mcasp_ahclkr = mcasp_ahclkx;
9 d8 P6 e  R0 q6 Sassign axr1 = axr0;
% S" B% z/ `. y; b) F" A  u; i7 I' v

; M& _9 \4 S5 d' h" G; e
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 R! q$ Q3 c' m* d' [$ T" `
static void McASPI2SConfigure(void)
1 V9 ~1 o3 Z0 O, d) d  U{
, ?  N+ `9 Z5 M3 F; Q; J0 EMcASPRxReset(SOC_MCASP_0_CTRL_REGS);$ \8 n3 n* W- U$ O; v8 Z) U
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% d$ n. a! `9 C! }McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
$ E3 W% p3 H% }. [6 O3 nMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
( u; Y8 y6 C. W" B: `McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ B' A6 o7 [3 Q8 X3 @
MCASP_RX_MODE_DMA);
$ b5 p+ T) a7 E) m5 UMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 U/ p5 D/ j, `% @. C0 W' n$ F
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- R+ ], K* F& j+ T% }
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, & q% t  n, Z6 ]% k* V0 c
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" F+ N  h1 S2 b+ P
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" A1 m" Z8 w, N  T( I9 PMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */3 M( B9 ~# b: T
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
5 |; \4 c" j% F% ~McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( D4 Q1 z. B% zMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ R6 r# d6 w# q7 T3 L
0x00, 0xFF);
/* configure the clock for transmitter */
- ~$ S  H9 L( U6 q. p1 h+ O7 @McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
4 {. ~# m+ S4 S" N* ?1 YMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( Q3 T& ^& X! U- ^McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," [8 z1 c. D9 b
0x00, 0xFF);$ V0 C$ i. I( @5 g' X3 d8 E5 x

7 Q, s' z- U8 C8 k/* Enable synchronization of RX and TX sections */ ; i! b( w1 J' V1 W! M
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */7 J7 t" L7 a( w; g* k
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 F. q$ h, I/ ^' J. H
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
; ~" |( N! Y4 q) x** Set the serializers, Currently only one serializer is set as
- h, K. e8 u  m** transmitter and one serializer as receiver.$ Y& L& l8 X/ h4 e& L
*/
- V* h' b' T. NMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);  U* v0 o6 X+ B9 h9 T% ?
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*. Z9 o! F2 o( ~! @+ v
** Configure the McASP pins
1 O$ m' ~' l; _0 D4 L3 }6 _** Input - Frame Sync, Clock and Serializer Rx' V' _7 p  @6 e' n2 c
** Output - Serializer Tx is connected to the input of the codec ' }( a9 _! F) u0 g) r% |
*/
$ B+ A9 h2 X6 d4 c6 C2 ]+ AMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- F, f. E. j2 `1 ~( LMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ I- z( E. [4 v5 n5 I6 T+ \
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* I8 n# V" W$ {7 E0 B) U
| MCASP_PIN_ACLKX
5 m- T0 M9 b& u| MCASP_PIN_AHCLKX
0 p. s4 R. W5 Q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% O7 P$ b( [! F4 }- _7 ~McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 d0 j1 Y4 E5 c& b  @- H* r| MCASP_TX_CLKFAIL 7 x1 Z' R: F; E( b$ i( S3 d7 ]( d
| MCASP_TX_SYNCERROR
& ^+ t/ C% n; d; p$ E| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 8 F6 a# M; G* w! V6 m8 {, L4 X
| MCASP_RX_CLKFAIL7 c' i% }, w2 @* R# l# ]9 u( i1 A. P
| MCASP_RX_SYNCERROR
. t% T8 h0 Q" K3 V| MCASP_RX_OVERRUN);
9 t. J) }) r5 a* k  J* V8 I4 w}
static void I2SDataTxRxActivate(void)8 c- ]/ L9 i. H& d3 k
{2 V  r2 F( [$ [! X
/* Start the clocks */
8 x2 a$ b% L2 d# c7 k8 hMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, X* z, E6 m  bMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */6 n1 e; W$ M. Z7 p/ n0 Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  Z  y" N5 P! g: J; h" rEDMA3_TRIG_MODE_EVENT);
1 R3 C% L# w, Q6 @EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
) V' ~3 o9 y' F) {: d0 s/ g- k1 dEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* d+ ]* p1 C) A9 x7 ~* N6 U8 oMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);, q9 L/ t& C! y9 Y8 K
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
- }: i+ Y( r0 V# H& l! Iwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! e9 ^) `9 l  M/ g& u; j3 t, p% P
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);% Y& Y9 E/ G) V7 M  g# ^: Y2 q# \) D
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! _4 _# k; n4 ]* k}
. U; n: \2 L, T) t/ V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) B7 {( l* d& ]% ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-5 22:14 , Processed in 0.041225 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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