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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9551|回复: 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,
3 g  {& l' N: ~- A' b, Ninput mcasp_ahclkx,
  E# s! L' H! ~8 f# |: Dinput mcasp_aclkx,
% `& z$ h, R% \" z% @! Binput axr0,
6 F" ?9 D" I3 L; s* m' R8 N0 l' T% X0 |" n/ E
output mcasp_afsr,
4 }) v* ?5 W' T7 H1 @- b4 |output mcasp_ahclkr,
- r$ `9 K  S0 p, S! _+ eoutput mcasp_aclkr,
# f, t+ v$ w! q8 A5 O" S0 I+ }output axr1,
$ r" U) }5 D  K; ~
assign mcasp_afsr = mcasp_afsx;: W6 L; M; X) `# D5 y
assign mcasp_aclkr = mcasp_aclkx;
' J# G6 K. a! |+ v+ L9 U6 v! d  o  Bassign mcasp_ahclkr = mcasp_ahclkx;+ N# _0 P1 N2 j" N
assign axr1 = axr0;
; b0 b5 I" H& X8 \8 k  n5 O; k
2 \0 m% g3 {1 o/ D( d5 Z$ G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 I* s% q9 j$ ~) F9 ]' i
static void McASPI2SConfigure(void)7 Q7 Y$ S+ M  U" h$ b6 M
{: m! ~) B2 [, M9 k) C
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
: ^7 F8 {9 j. p0 v' xMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) F: g0 D# \2 G/ O3 I' j$ K5 u  e( J$ K: G
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
8 U2 j2 {* f( x. LMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */& A5 H) g  \1 ?9 C3 |: |4 `# Y! y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ e6 j- v7 i4 s
MCASP_RX_MODE_DMA);
! n7 _$ I0 x! ?; MMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 `$ b4 ^3 M. W- c/ ~5 X
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
' h8 B6 N5 h; _7 Q+ U/ }McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
6 ]: u; g* U& {MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# F* Z6 P1 {' w: H5 M6 ~$ s+ \McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, $ O# Y9 U. {9 B
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ ]2 p5 p/ Q$ t7 ~' J, ~% c. q  k3 V
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);2 g- p+ p; A, G2 J* g$ \! c
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( q! f- k3 m; S. w+ n, c; ?( g
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
: X' g) c' B# t& L) d+ o0x00, 0xFF);
/* configure the clock for transmitter */
1 d! ^8 S5 q' n  H& I9 z9 }McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);5 Q1 H8 v$ ]2 G8 X
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + ]6 u8 g1 e5 {! v' `( @
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,+ T0 D0 m- t1 V; g- J* f
0x00, 0xFF);
* Q$ W. D- P' F! y0 K
6 t- R$ u5 X# {* e- G! J/* Enable synchronization of RX and TX sections */ 0 u& R2 c' H0 h5 B
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% n: h$ |- {$ e9 X0 j
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 ~$ W( X; i& q9 w- l0 x+ {
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 T4 Q' N6 t. ~+ ~) c( A
** Set the serializers, Currently only one serializer is set as5 ]) D% d- H3 n6 ^! i. p
** transmitter and one serializer as receiver.
# `' s# A3 l. B# I& T& k*/, ~0 Y' T8 i' r% X4 j/ N8 O
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);! P" T. B) c  N# ?
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, B: \; e7 w/ T0 y) o
** Configure the McASP pins
4 g" f2 N+ M. h2 L** Input - Frame Sync, Clock and Serializer Rx
1 w- J  }. @4 R/ u  c: b) L** Output - Serializer Tx is connected to the input of the codec 8 |, d! T' ^8 A( M8 S  \- A' d
*/. i% c3 s/ K  g; `
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);! G; l; n8 `, G" ^# k
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: m" k/ S" z+ ~' m0 A
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' H1 V4 {3 g! W! L2 I0 I
| MCASP_PIN_ACLKX
+ v+ G: @& z. b| MCASP_PIN_AHCLKX: L) e- u. v' ~! x  U) J
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( p; M0 ?3 ^; d! I
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
! R& s2 @6 B/ M7 O% v" d| MCASP_TX_CLKFAIL
8 w: B3 o8 B% Z2 I: L5 F| MCASP_TX_SYNCERROR8 o2 r; \7 B& X7 W& S1 Z2 ]
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
! _3 ], W# d" E8 P" K! c; Z| MCASP_RX_CLKFAIL
$ `3 B; E/ F) h1 G6 ]& k( c| MCASP_RX_SYNCERROR
0 n5 w( ^6 t& B| MCASP_RX_OVERRUN);
# O: N- s' z$ H% T# v8 O  I7 M}
static void I2SDataTxRxActivate(void)/ A. |8 p+ P4 `* S0 w. c% z
{+ c- A+ a+ d5 j9 i4 x
/* Start the clocks */
# Q. l9 [( S+ ~8 y3 ]McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 ^% U1 V: E5 b2 J& }
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */$ X, P" T3 I+ T% q6 v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,0 X, ~2 z1 Y; P* ?; ]+ d2 g
EDMA3_TRIG_MODE_EVENT);1 c$ f9 @- _6 A, ?: v8 B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& u. u* I5 h( ?9 W3 [1 W5 V1 P) OEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
1 b8 Z* L& [5 k  `McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);/ Z  q7 X( B0 U2 o
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */+ K/ i1 W& l! B
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 _# j: [" E/ R# MMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);4 h4 D- J' O' a1 K9 K& Z, H
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 o7 K* R/ O4 S7 F1 ~2 l}
+ P8 [+ [4 q3 ]; j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 }5 @: _& D2 ?% h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-13 15:47 , Processed in 0.040033 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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