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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10318|回复: 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,  J+ z" k: U5 i6 ^5 b
input mcasp_ahclkx,
) `2 _7 R1 n, ]& Sinput mcasp_aclkx,9 ?8 D6 Y( c+ ~, e( f  k  \% g
input axr0,( f4 ?& X, B1 Z, Z9 N
* y, _4 ]! n1 z( c$ ?8 ]
output mcasp_afsr,
/ k, Y; d/ r/ ?5 Moutput mcasp_ahclkr,: U" U( ~6 m- y. j2 ]6 I
output mcasp_aclkr,
9 g% p8 S: J& @. t: noutput axr1,: A9 R! l5 e1 F! w" O
assign mcasp_afsr = mcasp_afsx;% C5 J1 E8 }% }( u. W+ E  F& v
assign mcasp_aclkr = mcasp_aclkx;
) A/ k  U! `! v: b' Kassign mcasp_ahclkr = mcasp_ahclkx;
; Z, B0 V* G% P' W2 X: Y2 j% iassign axr1 = axr0;
: I! Y) u7 `4 n) {, M% L

% o$ e4 }: g3 n1 N  ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

0 Y+ i. c/ W1 B  F, O# v
static void McASPI2SConfigure(void)) v7 Y" z8 i/ A( w1 C2 h  l# \! s7 q
{+ b& [. x4 N5 K# N( e" d' G
McASPRxReset(SOC_MCASP_0_CTRL_REGS);) @# X9 F& _/ O! ~+ s. o+ `; H2 F
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */3 e) V7 l9 @0 E9 _, e) ~
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
- }- g; S) ~& G, T! k) v& ~$ L4 }McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* r& G4 q* {/ p5 I4 w( C  GMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ k- W' z# s1 N& k$ p
MCASP_RX_MODE_DMA);
4 b0 j( k2 j# P0 y* e1 }McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. V8 h5 h+ z7 J, `( E, r
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */; V. J0 v8 x- d8 ^) a
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, * J+ x" A, j) H( k! X  f. n
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) q: C$ A8 c3 V1 V8 p+ rMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- L3 V$ z4 t  s+ DMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# s$ u& t$ r6 B" j: DMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
( O/ K+ ]) f- [% h# f1 LMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 1 V& B) {- K3 a1 @
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
1 W& P, a# L  @0x00, 0xFF);
/* configure the clock for transmitter */
4 l1 Z1 B- K2 [' I& E; tMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) c. h% \' i) i- t
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);   q3 e4 j9 y8 J# R8 `- d
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) V- ~( s- W% P* U! H
0x00, 0xFF);
5 j6 _+ W) Z/ T: t& W# q) {' T  Q+ L1 [7 b% h* N' e/ R1 M
/* Enable synchronization of RX and TX sections */ ( L- B7 Q' q. c) x4 B  m
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) K* d* h0 C0 v
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);8 K+ m# F* ?* D# Z( L
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' o  {3 q4 R: ~' s6 B0 k( H** Set the serializers, Currently only one serializer is set as
! s$ P. G" a1 {4 \( T** transmitter and one serializer as receiver.
" w$ ^# K: @& X0 c$ v*/
8 d. M' a. A5 W5 N( Y7 MMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
* P& ~2 }! j, cMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
5 h8 w* P- D" R. r** Configure the McASP pins
% D+ s0 C8 |; ]( u) y3 z** Input - Frame Sync, Clock and Serializer Rx& ^3 k8 h2 M! V( v6 u. P) T5 q$ g
** Output - Serializer Tx is connected to the input of the codec
7 r% W2 |' Y0 Z7 g: a3 w2 O*/5 m' A& Y! k' _4 |
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* ^8 j  u7 |, p$ n" N* m
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* E- Q% s4 [( f+ r7 @& NMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
6 y3 h8 J4 q- f* w6 \9 J/ {# [8 M# B| MCASP_PIN_ACLKX* c" f6 |4 f4 X* Z
| MCASP_PIN_AHCLKX- N9 d8 R) S6 w; Q$ o9 Y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% c3 H* g) _0 d- EMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 \9 H/ g+ {+ P. t; R3 X; }
| MCASP_TX_CLKFAIL
7 V! L7 @, w  P( d1 [7 h| MCASP_TX_SYNCERROR
4 N  R; I% M) }2 @| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . o4 j$ b% Z6 {
| MCASP_RX_CLKFAIL" n% {7 G! T% `/ Z+ P5 o6 h
| MCASP_RX_SYNCERROR
4 `3 Y6 A* z+ b: [| MCASP_RX_OVERRUN);
% O$ Z& O' L) x5 M  `. n}
static void I2SDataTxRxActivate(void)
/ ]. `: `8 w( P" y; L% R8 J{
) Y# d0 L/ U* p/ B' U3 x/* Start the clocks */
) j/ m  h& B" f) K  Z! J* X: E1 UMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 g; ^: h2 v! c7 _2 hMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
7 N) B& x5 e  O% x2 M2 E1 QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" ^( Q+ a7 z) H% Z- [EDMA3_TRIG_MODE_EVENT);- R2 Q: ^  m$ e6 D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& G5 |5 O' t  v7 T; oEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: B& o+ k4 S9 F* u" j" q# nMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);; [9 A" L- k  @  z  I( s
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// q. U& s, V3 G
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( t( _: j2 f; u/ }2 o
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ O9 R1 j- n8 K' J
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
, K. f  `& F- O) f' ?, |9 z}

$ [7 e+ o& H" e8 b+ V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# d6 `% k' m4 x, m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-3 13:25 , Processed in 0.040641 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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