MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
' B* r+ W# D- {8 o) c3 Jinput mcasp_ahclkx,
! Q$ r4 k5 N4 a5 m4 a% Pinput mcasp_aclkx,
8 @" ?! p+ T( Finput axr0,
: C. y) _2 E9 o' i( ]0 M+ Z0 M5 L5 u- P
output mcasp_afsr,4 {5 x$ T9 d5 e4 F
output mcasp_ahclkr,' z( a8 u5 Q3 }  D7 v0 V; K& M, g
output mcasp_aclkr,$ Y! p5 i+ b" x/ |
output axr1," Y& @+ H' t, i9 k% D$ M! I4 [
assign mcasp_afsr = mcasp_afsx;
6 i8 a: r7 Y  F& V3 X! e; tassign mcasp_aclkr = mcasp_aclkx;, w. ~" A( }0 R. @1 s
assign mcasp_ahclkr = mcasp_ahclkx;% e! i0 D! g7 f6 n$ T; u1 S
assign axr1 = axr0;
4 S: s% e+ ^7 c# m; \8 |5 R0 M
, w7 Y, O/ b" r
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; g. f1 K3 E) @1 Q* W, V/ Y* x
static void McASPI2SConfigure(void)' g" J; O5 E& v% x
{
. p+ d2 D- |; bMcASPRxReset(SOC_MCASP_0_CTRL_REGS);  C0 F0 S- u: e/ s( k
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */( K, f2 ]' I* y; g  \* k, [/ X3 b, _
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);! A! l: I% I/ V! {3 \+ f
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 A( ^6 k9 k' ^, J& B1 z* W  ]McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' C+ t+ u& [, y4 lMCASP_RX_MODE_DMA);
: Y. l4 `. N! T6 ?$ [McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! N# H2 W4 [4 d# l, U) |, R
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* {; C6 ~) |/ Y! A' W9 s
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 6 f$ v+ R/ y" m! X5 J" i: u, J" C! U$ ~
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! ^7 V. [7 t: O0 `
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. w* n* J# d+ b3 H. _% g! hMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" k$ z' ]# B7 [+ t. m3 |0 z/ B+ HMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);- l5 {! q0 ?& R4 j% o
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
4 g/ U$ A! O' O4 {McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
, j1 S5 P* N' v; P0x00, 0xFF);
/* configure the clock for transmitter */
& c2 ]" _5 o- D) }McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
  c* o1 W, P, ~# W1 U. NMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
$ M: P: k$ E) e& F4 uMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! ^7 j, O$ M4 ?- q
0x00, 0xFF);
2 H* ~4 @3 F) T) p# }2 V* r
* l( A$ S) [# A$ Q' h7 i8 s/* Enable synchronization of RX and TX sections */
) w6 Z1 d. E" WMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' k$ u; A. w, p% `8 Z8 dMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
( ~6 ]) k8 |0 b) P! {McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 A8 ~6 e4 D4 C/ T+ n, j0 T** Set the serializers, Currently only one serializer is set as
3 l$ L1 }+ e& G* A$ i** transmitter and one serializer as receiver.& p% ~% G+ k+ z
*// z, z$ K: A: G! s7 M
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) f/ v; e, T  Y/ |4 L
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# W( H! J6 m/ e2 V** Configure the McASP pins + e5 I% K: p, m+ B1 }
** Input - Frame Sync, Clock and Serializer Rx
# z9 t* Q9 T5 f; A** Output - Serializer Tx is connected to the input of the codec ) D- x5 _' }; P7 d5 W& }8 k
*/- J- h: ~* U9 s1 J) q/ ^
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);( ]- U3 \  J" o* n
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));" B3 }9 d# F) [, c+ g
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 W4 v. @' r! `0 D
| MCASP_PIN_ACLKX, |& d* m% v, y2 m
| MCASP_PIN_AHCLKX8 g7 y8 B  k7 ?3 `" R, c
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ o6 x  F) M" w* z9 T  R) d3 }' BMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. X# Q. n' g% u) V4 U| MCASP_TX_CLKFAIL ! M) g) v6 k4 H3 F$ [9 l
| MCASP_TX_SYNCERROR( c  y) F  b, @7 r- ?
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
4 R+ f# W% W- H# S; r8 h| MCASP_RX_CLKFAIL
* M. J$ J1 I) P  P2 e' p+ O) H1 k/ Q| MCASP_RX_SYNCERROR
4 k% Y, V- }: q2 |/ a+ h2 G| MCASP_RX_OVERRUN);; W/ v2 E) B% f: x
}
static void I2SDataTxRxActivate(void)
8 `$ _4 r! d( i+ J- j. o* i  A{
  j8 a, d4 S  J$ ^+ M1 V3 I/* Start the clocks */
, P% Z4 K& n* @. l" ?! rMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
* C) `9 A9 N5 j7 KMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& `3 U8 k! J, `% C$ UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ @; \6 T8 [# E* v  v. Z/ c) XEDMA3_TRIG_MODE_EVENT);
* [8 R: ?" Q, b  W' wEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 T( Q, H  S+ r" K4 d
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */* j* M& j; v2 l
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& V0 G+ s9 G  R1 H2 J1 q. \" ?) X* X
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */* J1 g5 L" k( y6 \4 C5 x& n
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 ]4 A6 q4 S$ l
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* d: S% n" D3 G2 \McASPTxEnable(SOC_MCASP_0_CTRL_REGS);- M9 H) M0 b& K2 o
}
% C4 F, R( s8 M0 \& i3 A) M. k
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- ]5 ^6 H2 o" N% J3 a% a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 23:35 , Processed in 0.043232 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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