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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
) \* [/ m: D1 l" s! k3 Jinput mcasp_ahclkx,
( s) `; {% F* o, n* Jinput mcasp_aclkx,
8 [; Y4 v  D) _' Kinput axr0,  B' v; p; o3 R$ X1 s* s

! t6 w( v0 {& s2 N) Y3 c* Soutput mcasp_afsr,+ w- U0 [- ]: K, D8 w
output mcasp_ahclkr,
+ H3 i& K$ X7 c+ a+ c- B" x& ~output mcasp_aclkr," z9 [- x2 n2 }! `! s9 `* V, X# I
output axr1,
# |6 R8 f' Y' K% r
assign mcasp_afsr = mcasp_afsx;
, o; u& @6 N/ O6 x8 |, Q) c  ^$ T1 Sassign mcasp_aclkr = mcasp_aclkx;8 r( l& i. G; I# _$ O' X: L
assign mcasp_ahclkr = mcasp_ahclkx;
6 [& T3 q  N* x8 e$ {, o" Passign axr1 = axr0;

" {( E; _/ d8 q) W" \) p2 ~1 u( v. m" k  i4 w
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
, b5 M# ~5 q$ @/ X* V2 I
static void McASPI2SConfigure(void)
9 S2 v% x& k5 i+ T3 n{! ?* p4 m7 e' y, p  m6 f
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
! z" t% Q, I' o) p/ s9 wMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 Z' {) @6 i8 q# p& M0 n6 \
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% M  B5 n* e& {& y! a! aMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */3 n  @  }# |6 E0 g" b( Z; W* L* W
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. ~( x+ r, u3 J5 D. z  D
MCASP_RX_MODE_DMA);1 U. e  Q$ O6 P
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 J- O; w/ u: z8 T- p; ]MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */. Y$ q. P3 r6 a: @: Y3 R; h7 s
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; R+ ^$ X' Z# [$ l7 Y4 P5 U9 g) B7 M
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 ~( ?; x6 X% K& U% XMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ G' K  y" g. {0 g! J- {4 AMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */! K& l) d- j  Z$ a! R4 O
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
# D- s' V# _6 b: ~5 {McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
: o$ N. p$ x1 aMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,8 H, u% F* @4 Q* Z7 s
0x00, 0xFF);
/* configure the clock for transmitter */5 q; \9 r+ f+ w5 Y+ ^
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 \: d2 s; W2 W  m# u6 P! E
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
; X1 R0 f) v0 r4 \9 x, ~/ RMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* g( V0 s' j) l0x00, 0xFF);
" d  \. v' g" X- u8 ^8 P8 K2 n. ^% ~( y
/* Enable synchronization of RX and TX sections */ 9 [% D$ d- \) x. G7 I( d  D
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& Y- X5 c1 P6 ~9 Z, D$ Z; K. k1 ^" jMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  p) M0 p# U! L# |, TMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. Q- {9 U$ j, ~1 Y/ r' D3 B** Set the serializers, Currently only one serializer is set as
) ]8 u/ j: g6 A; E* N** transmitter and one serializer as receiver.
6 y- C; ^; _5 u% L6 V*/$ P# B0 t3 Z4 C2 L- \
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
+ @1 j6 y, V+ ?$ d" Y; q+ SMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*% D0 x: Z  {5 H) j  U) Z- z4 c
** Configure the McASP pins
; ^& k' s5 A9 {* b, o$ A2 R** Input - Frame Sync, Clock and Serializer Rx. G& ]$ R  _5 ?' @$ ^, c8 `
** Output - Serializer Tx is connected to the input of the codec 9 L/ N& {$ N( c! }* t1 {  c6 m
*/
$ }  ?/ k) j2 HMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 \1 w' U3 Y5 f. u5 LMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& N7 s: T, q! F( y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 c  I0 z- {, B# {! C
| MCASP_PIN_ACLKX
  C7 t. J4 Y* x0 \; f! B| MCASP_PIN_AHCLKX* k6 _0 q9 G8 Y0 F
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
" P. g( z4 X8 Y) p+ A) S/ d: BMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 G! Y0 q8 [; J  i. || MCASP_TX_CLKFAIL - E8 W! U' D- B1 ^. }
| MCASP_TX_SYNCERROR
) n, Q4 ^- }! e| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
- P. g' t8 ~/ ?: [& T| MCASP_RX_CLKFAIL, w1 }; _# J) W
| MCASP_RX_SYNCERROR
. h+ T, D6 ~2 O# X# S! X) k. c| MCASP_RX_OVERRUN);
7 ]1 J6 E3 B: n- {. N}
static void I2SDataTxRxActivate(void)- a# P- r: ?  f  r0 ~/ o
{. n  v: s- p7 l
/* Start the clocks */
2 j( f3 {9 i, c8 T* ~' ^McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 i8 f7 g( m' h* AMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 z' a; ~4 v3 q. ?; r) uEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,8 [+ _6 Y/ |$ [. O
EDMA3_TRIG_MODE_EVENT);" T% \3 V) o$ n2 i, k
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,   F* K0 g  Z6 i$ {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: b" A/ h# o7 f% y0 E( ~. B
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
+ k, W  c1 U) _* x+ vMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 y( G2 l% V5 Gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: _! p# J& X2 [. J  B9 f# N
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);* o8 n7 I9 P% x/ S
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);) _" V4 {& [' M0 B, ?; N, j' A# W
}

* o3 k# s2 t' q( D) l, }" p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  q% k% n# Y# b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-23 13:16 , Processed in 0.042868 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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