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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10599|回复: 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,8 c1 D2 V4 `) @5 U
input mcasp_ahclkx,1 g1 a/ Q7 e3 P- b  W# o
input mcasp_aclkx,
  v1 ?2 z2 R  vinput axr0,
( ]9 `5 U# c/ y2 W+ p% W5 ~3 @% _+ h2 h! M: C3 X
output mcasp_afsr,
) p6 R' Z' t+ [5 v& Coutput mcasp_ahclkr,
+ }3 c+ H. A8 v+ Z: doutput mcasp_aclkr,
  d$ }3 b  q* s+ T9 M5 [1 X& p" Ooutput axr1,6 G( S5 Z( Q0 t/ ?* J/ U" d
assign mcasp_afsr = mcasp_afsx;$ i) T# T( ?1 e( R6 i" F
assign mcasp_aclkr = mcasp_aclkx;' w4 T. H5 F: j9 x" S
assign mcasp_ahclkr = mcasp_ahclkx;
: N9 {$ o4 q3 D8 eassign axr1 = axr0;

; z- T  I3 P7 b
$ o( Y4 G* B2 s* S+ z- A$ l
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
" J) g8 E0 B2 U' m: j- X
static void McASPI2SConfigure(void)
( m4 [. h3 g0 \+ h{  h6 N' \( |4 p# Q# J
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
, f; B* z* y: h$ H( Z$ t$ a9 QMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  \4 L1 A/ J5 ?
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);/ R9 E- w) x8 T' E$ i! ?( _
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */! @6 o1 l. e, V
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' L3 z$ f8 o7 p4 v1 gMCASP_RX_MODE_DMA);* ]+ C4 [* g6 u: t& c
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 m, g. ?: L; _5 d! S
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
+ X# p/ ~  q5 S' |McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
+ g) W  c7 A) `% I# H5 OMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" x* F2 c; ^$ k  j+ b- e. [
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# c( }$ Q" y+ K& Q' S) {MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# O" F3 w; d1 u5 c$ w$ HMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);! L9 i. \( m* M' Q0 y
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 U; e& `$ z! k4 `& m7 f
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
* B* @( e- M. G0x00, 0xFF);
/* configure the clock for transmitter */4 Z' A4 M. _& p3 \
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ M" m, F2 l4 l& Q
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & j0 E2 ?0 h$ l& m, G& A  L' K$ C% @
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
; C* `9 i+ w) W0x00, 0xFF);
+ N8 ~( K2 P; o! x4 I, F) C& {7 E
7 o# p! O/ C+ K* {1 J. K5 [/* Enable synchronization of RX and TX sections */ + d8 K" a0 C$ I% p  q7 O
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( H# P/ e' j6 W- K* F2 K" x0 T
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) ?, I9 N" C# ]McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
; b' z' v* o) o2 w** Set the serializers, Currently only one serializer is set as  L) U' I4 O; R' x! v! f$ T
** transmitter and one serializer as receiver.
# ?  M1 _+ c5 m/ @# ^# p" a3 R% Q*/: K" _9 F" c) o: ~5 m5 P
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ W  j8 p% r' ?5 |3 i' `# M
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 D8 [  q% g' d  @3 ]# w' W** Configure the McASP pins 0 h+ D) A- ^& M5 r
** Input - Frame Sync, Clock and Serializer Rx1 Q) U* s" @7 ?5 f" |) r
** Output - Serializer Tx is connected to the input of the codec ) q+ L( z# J# x/ w$ J4 w
*/
& ~! v! O1 G5 pMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! M4 F+ o' g1 AMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' M, J' V# {9 c
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' Z6 H0 x8 G" N9 K
| MCASP_PIN_ACLKX
( c1 p! j3 }, V* f* ~# N- ^| MCASP_PIN_AHCLKX6 y8 x/ ~1 z& `
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& L; k3 P- q' kMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 Q3 ?7 r' C2 c2 b# g( G| MCASP_TX_CLKFAIL
. E* U, t* r$ a3 O) k4 i9 W| MCASP_TX_SYNCERROR0 R3 A. {" ^4 w6 q; o) P4 m5 `
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR $ u$ l& g5 j) M% N  z9 M
| MCASP_RX_CLKFAIL4 u6 P, n" u$ K, g* `. G/ V8 T
| MCASP_RX_SYNCERROR / E" j% A/ w, }4 w9 |, S
| MCASP_RX_OVERRUN);2 O& H1 X+ e# ~0 X& ~" m( A- L
}
static void I2SDataTxRxActivate(void)# l& d2 l5 N9 q& Y6 a9 Y
{
/ i7 w/ Z* m) x0 |. v/* Start the clocks */
0 S9 W, j) d6 m# s: M( D2 NMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& z, G& B, b! U
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; @& K0 \. f% KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- i8 B- }  P1 |4 u# t0 E2 k6 Y$ WEDMA3_TRIG_MODE_EVENT);: r9 |% h) m2 V  G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) Y: }" D& k3 |+ w6 ]) k
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, d0 W' a8 \& S& f$ t9 T& PMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" j# e/ }4 [. v
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 O. V; u3 K6 q* b( w( F' }" pwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. n- }/ q  c1 `$ [McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ b( v& L# `$ |/ A. c  w0 n
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
8 u& e& l, w8 L' A/ u0 v) m}
; [6 f. R2 j2 `3 H' T" d8 o; a1 Z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% q4 b2 b7 B) p: L9 S9 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-10 19:44 , Processed in 0.040060 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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