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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,# g+ w7 ^5 _- n
input mcasp_ahclkx,
& V) s) j( @: _( A, j$ Jinput mcasp_aclkx,
4 e! q" @4 T; C* q( v0 f. _input axr0,
  p7 g; v0 u( v$ C; X) \6 b
) L0 M6 q8 ?! B2 Aoutput mcasp_afsr,
( g. R' j* E! |, B+ [( Boutput mcasp_ahclkr,/ S0 q5 A' |) _1 D* z  b+ o3 S
output mcasp_aclkr,  z% f' t; v( e1 g
output axr1,
; U2 X2 ?" [# [2 c
assign mcasp_afsr = mcasp_afsx;3 [$ \0 ?% ]; h8 E" b8 _) t
assign mcasp_aclkr = mcasp_aclkx;, \: T- U, z) l2 L
assign mcasp_ahclkr = mcasp_ahclkx;
  M1 Y& d7 [& G) ~8 _, zassign axr1 = axr0;
4 `( c: T! v2 D8 w9 s- D0 O
% l8 C4 M; R, O- J, D4 I3 d2 X
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

- N2 Y' V5 S5 V5 b# q0 A9 I
static void McASPI2SConfigure(void)8 K/ J+ p+ }$ |* r2 g
{
& e$ h3 L2 `# W; L4 [McASPRxReset(SOC_MCASP_0_CTRL_REGS);
/ e# k/ G6 U- q9 z9 rMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ l5 I9 K; C; z
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 r! L9 Z4 G2 |) e6 G4 |7 }McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 N! G( x, d! d- o" x  g6 b2 ?: x& z+ NMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 R& p: W) o1 i5 s  e' lMCASP_RX_MODE_DMA);; n  M  Y; t1 _( W3 k
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 W8 O- e& S& s: A( dMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& Y1 s% m1 E" h2 i
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- \  n1 z# ?! i+ r7 l$ h) [. MMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 y8 L  U$ x) }
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 n- g- ]+ m, nMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; a6 _1 L; ^9 j/ v2 W) P3 ?
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( _9 b0 N! b, y
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 Y( a0 w* y% s" [- ?/ t4 WMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
* V/ S% ^3 f- \* K8 Z$ Y0x00, 0xFF);
/* configure the clock for transmitter */) G7 D& d" {3 u+ `
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: [/ s( @6 d; |: B  x# Y1 q8 x+ X
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); , E2 f6 J8 v# [
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,& o3 }5 a! \" z
0x00, 0xFF);
& y& ^+ [* O7 w5 ^! {
% s& a) _8 g& Z. [) {- X/* Enable synchronization of RX and TX sections */ 2 I# j$ H! ~# j& v* u
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
  _$ v9 k) W8 |McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);, w5 W3 g* b; K; W
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*; N( \+ p9 [3 {6 i% C: V2 S' W! @
** Set the serializers, Currently only one serializer is set as$ a' |. q" i9 Q2 s! ~! Q" J3 V
** transmitter and one serializer as receiver.3 i' M3 s' p& d: B
*/
5 E% D) z! Z$ y2 UMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);. E  j3 {- p- S  N9 m/ b9 R, l
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
. k# I3 }2 T( @$ \; ^- x** Configure the McASP pins
. Y: A+ ^  n$ S5 Y** Input - Frame Sync, Clock and Serializer Rx! v. M8 u6 V$ t9 O- A5 e. [
** Output - Serializer Tx is connected to the input of the codec , M4 C) ]# q0 @$ E: H  l5 U# L
*/
, R- C: ~# A; n3 z# N% tMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 @# F, K! M) J3 ]McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ W6 ]0 C8 j5 ^1 H. [+ f- ?McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX5 L. d. Z6 n( q
| MCASP_PIN_ACLKX! m. t- F) |7 y4 G+ r
| MCASP_PIN_AHCLKX
# G% s, k) X  Y% p2 j| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* H! h) Q# Y& b. `1 u* w* V; C5 r
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ ~5 G% H. F* y% y| MCASP_TX_CLKFAIL 4 z5 k9 w- @4 S& S
| MCASP_TX_SYNCERROR
  B6 x4 w7 A+ K2 h| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ C; d3 i1 K7 m9 Y& W0 P# H: F* M| MCASP_RX_CLKFAIL( j1 r9 ?' G8 ]( X/ S
| MCASP_RX_SYNCERROR   o) u: P! R- M( ^
| MCASP_RX_OVERRUN);
' Z( k1 {& r1 b8 Q- q4 @, {* U6 G}
static void I2SDataTxRxActivate(void)
2 q5 ]1 s' T) t0 u8 Q{
: o! C7 E- |+ z* V/* Start the clocks */( @3 ^1 X7 r. ~) L% j4 D
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 d  Y/ p# x- O  I+ a
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. @5 z. @# l, k6 r, R
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; y  H( `% U* Z3 K* ?EDMA3_TRIG_MODE_EVENT);
: o; y, {, F, V1 W2 XEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& \0 f; ~+ l) H4 EEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: @# x* {# ^0 f. j, ~# E0 eMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 }9 B% f0 R8 X+ D; r" `McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */3 k2 z& C  o8 S( j: X
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
( y8 Z" h& t- MMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);* G& N; n1 w2 ^' h4 ]8 v
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 |' G  e* c! ~$ B, E' c
}
0 ?5 u* `3 L& G0 j- w( k3 J
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: @( l- Y0 P/ w5 ~' l) L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-11 21:44 , Processed in 0.045749 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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