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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
! N3 {' ~: f+ @# r1 z3 g) sinput mcasp_ahclkx,
5 o  b% y: M+ w. finput mcasp_aclkx,
7 _# _1 I( A! `, _4 ?7 r! Zinput axr0,
8 r, V* D; I2 G' q. t# l
( n& U0 k4 F5 K: C3 L: E- Soutput mcasp_afsr,
- q6 v3 f8 Q( v0 l" `1 C% joutput mcasp_ahclkr,( p  i" L1 M; q0 l5 ~. o
output mcasp_aclkr,
( N  `% X! Q) H) Soutput axr1,
9 {, g" r) e9 m% ~2 E
assign mcasp_afsr = mcasp_afsx;
$ m1 U& H2 S; ~assign mcasp_aclkr = mcasp_aclkx;0 a3 A& K" z) F' T
assign mcasp_ahclkr = mcasp_ahclkx;
' w6 t7 k% l9 E" ]# w2 ^assign axr1 = axr0;

7 E. w9 e6 C' [- F! |2 g5 [+ C
& M& ]0 b; w, N2 g9 C1 _+ h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

' [( m6 @+ J9 a) w- ?0 n5 V% h$ _
static void McASPI2SConfigure(void)
# z& _" J& |, z3 ?% i" A, v7 V{
" y- o$ |" I/ j" P+ M% EMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 }$ x' U$ Q9 W$ w! NMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
7 g' r" g. J+ ~. g  j( M* w: lMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 K' Q0 R. c# D0 R' \! F: I. h
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 v, u2 J& k( b
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ m% o. M; M+ X  F2 h0 r) s" PMCASP_RX_MODE_DMA);
! |5 ^9 `& ]! E( H2 A! q7 _7 ~McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" {5 x5 A' W7 S- XMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */4 F- k: |( z( B+ f/ {
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 6 D# S/ r+ Q$ ]6 U9 j# z
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" p. D5 _" ~/ F0 z. w5 ^/ M
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
8 H6 y2 }1 [, ?( wMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# P/ u$ [( a8 T, E+ d, C5 Z
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 n% s. S, ~6 s( [
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
% ?2 ^6 Y0 S: F: i' U8 oMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,8 t7 I4 K. I& B9 L, a( `8 I
0x00, 0xFF);
/* configure the clock for transmitter */: R" F& c" F; w( e. E
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);+ x9 \, n2 y- S+ `
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  _9 A2 P- Y8 Q0 I$ mMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  Q( P2 j. f) U+ [  R( n/ u
0x00, 0xFF);3 z6 ]" {. ?  M% S) m( A
  {5 L5 v$ X1 z$ c& S
/* Enable synchronization of RX and TX sections */ 5 k6 `: p9 |8 k$ ~: n, f
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 j9 u. \* I/ e( p! U: _
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 G4 p, V0 H5 E
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 M5 M9 F+ i4 m6 L: R) ]** Set the serializers, Currently only one serializer is set as
, ~8 [9 K5 n+ R. H8 x** transmitter and one serializer as receiver.
/ t+ m: ]1 O5 ]  o*// D4 q7 f$ n. I5 n& u- I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
( A) {+ V0 t9 i0 E( lMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 U& O4 h7 t+ ]1 a0 K** Configure the McASP pins   {, }1 V# G/ {3 {3 b1 @
** Input - Frame Sync, Clock and Serializer Rx# X3 _0 e7 g* P
** Output - Serializer Tx is connected to the input of the codec . K" Y/ Y" o& l2 |
*// X+ B9 {$ W% a1 F- b
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
% H% ~$ x- J! qMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));; \9 _% v% e3 b  w! y' S
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX- U# r3 s" o7 A/ e' v" X
| MCASP_PIN_ACLKX
3 N- a0 K! ^/ J1 ]1 R1 a| MCASP_PIN_AHCLKX
, M! D3 g; `) y7 w| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */5 u3 t) C$ V7 @: {: S8 t$ J& t( z8 b  {
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
% J. ?1 u1 c) D) P| MCASP_TX_CLKFAIL
# F: t  A- i) w1 ?| MCASP_TX_SYNCERROR$ T! O  ~6 p* r! S: `( B+ H7 u6 j3 }
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ; _& `  Q1 |, Y) s
| MCASP_RX_CLKFAIL5 Q! D. f4 J' H' A( {
| MCASP_RX_SYNCERROR 2 I3 B0 s0 g$ _7 ~6 g! e1 P% v
| MCASP_RX_OVERRUN);
( u4 l" O0 X2 T4 F}
static void I2SDataTxRxActivate(void)
% b/ L4 j# |& g$ N, O{
( l% R# g- [$ W% I" w; j+ C/* Start the clocks */4 K( z: x2 `( S3 T/ T! G1 A. e1 d% X4 ]
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" Q$ J1 z9 t6 `7 [
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
- k9 }9 u& G! O& b0 ]9 F2 IEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 r! D8 |! m( Z/ F( ]EDMA3_TRIG_MODE_EVENT);# \% q  Z2 D1 B2 }+ o
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : \! M7 b. f! u' {6 W# u
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
6 |( l# p; p3 b5 k! x0 \) \! wMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
+ ^. Y9 f7 e# l6 E7 R* DMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */3 B# {& v1 c! D( P* l% _
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 [5 \" @5 @. h/ t" t: B. v3 x
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 l! d# A. j0 B' K
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% w3 `& B+ V: }" ^) n5 E6 @5 v}
8 M% L( K& ~& L
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% p" y- z+ ?3 d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-28 10:56 , Processed in 0.037538 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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