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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9129|回复: 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,
+ [9 R: M" ^$ Z2 E; X3 t5 j& i$ |input mcasp_ahclkx,& k0 }. D9 |7 c) M' N' O; b7 Z
input mcasp_aclkx,
1 L& V; P1 K0 v3 Uinput axr0,
" F9 ?$ }/ b3 ^9 Q7 |1 O, o' [$ T) A# Q" ~
output mcasp_afsr,6 ?, f& Y" K2 [6 P6 G
output mcasp_ahclkr,/ V$ v7 [. ?# a9 @, T( r
output mcasp_aclkr,
$ k( ^( J: r  b" o1 }output axr1,
/ F  h% W: y5 ^- m% k
assign mcasp_afsr = mcasp_afsx;. S3 V2 {4 @' K3 q4 J3 p( H7 P1 F+ f
assign mcasp_aclkr = mcasp_aclkx;
- O3 R8 V8 ?! j7 P0 O! L# }% `/ U, [assign mcasp_ahclkr = mcasp_ahclkx;
0 v7 r# Y  S9 X, g& x* Nassign axr1 = axr0;

2 l. [2 d0 |: x& k& M; G  }' P; h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 S, @4 p7 ]  h! D
static void McASPI2SConfigure(void)3 o: h& I2 R6 F1 t. o; A8 S% b
{
2 b. `- {: Y2 u5 LMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
' u: |" F9 J. ~3 n& IMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: C( t0 V# t8 j7 g! mMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; R, A; n- O. R8 r. T2 x5 AMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. H! Z% k( `0 q6 q& q. TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& E8 d. @. k# X+ ~" c7 \
MCASP_RX_MODE_DMA);3 d, J( v5 S0 A$ [6 Y
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ c  j# C: d5 F/ h8 LMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# N) T/ Z- a( nMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 t! g1 S# [+ b/ `
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 C8 G( U% Z  tMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
: r, }% ?1 ^  U4 x5 R1 FMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( `* ^# g( r4 }5 m- i; ^9 z! c. ~
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
+ z9 X/ K" l8 Z. @# m: v& \McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' y, d, W# X4 X: ~. [# {, ]
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ P4 V/ S) p0 A5 X& O0x00, 0xFF);
/* configure the clock for transmitter */7 L) T1 I2 t) L+ T1 M" \% `
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; m. @8 A2 T  s& v- iMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 5 E, k. T: s' t
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& z3 t: S% }3 n/ Q) n# d0 R  n0x00, 0xFF);8 E' T+ R# @. _# A4 P7 M

% M/ W$ a( o, t: s6 ?5 `/* Enable synchronization of RX and TX sections */ 7 \- N( h, m; e3 d$ }6 E4 k  V
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
( e) C$ R! F4 v4 |- sMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
8 [+ k7 i2 ~0 h! gMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*: b0 \3 P+ m, ^( ], W3 H2 B/ J
** Set the serializers, Currently only one serializer is set as- T+ E: W' T+ }3 ~
** transmitter and one serializer as receiver.
* e) f8 V) q) @% y) H9 n*/
( |1 b" ~" ?+ O5 |+ V# XMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
9 W- ]( t. O. S& O! dMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
% p  U% `$ F" z7 ^' c1 L  [** Configure the McASP pins
- [; C+ G  q1 d) h; E** Input - Frame Sync, Clock and Serializer Rx
8 u7 C* v' R! p2 D# G% C** Output - Serializer Tx is connected to the input of the codec 3 o0 U/ |6 A  u- D7 A
*/7 Y+ a8 m5 E4 ]. E2 h  t! A& D8 T
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ P7 h+ I8 _" c! k& @" m0 |McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" w+ {  n7 f8 p* @& |  T( wMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 Z$ L5 _8 C* r+ F* H4 M1 Z' ]6 \
| MCASP_PIN_ACLKX
3 j- e, z: x1 o* }8 r| MCASP_PIN_AHCLKX
, ]' p3 U1 H( g& h+ Q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */! C3 ^$ b& O; r0 c4 G4 I
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
0 e# d" e5 B, w: Q1 j| MCASP_TX_CLKFAIL
: b% i9 m1 N6 Y/ N2 M| MCASP_TX_SYNCERROR) u- j. v; ~6 O3 b
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' v, O, a. S; Y$ k  S1 j/ l1 r
| MCASP_RX_CLKFAIL
' q* D8 k7 h( @* {2 ^$ N" X7 I# k/ ~0 t| MCASP_RX_SYNCERROR
. c7 S1 D7 X; J) e8 Z: N! r( || MCASP_RX_OVERRUN);6 c3 {' G* F4 E
}
static void I2SDataTxRxActivate(void)
# C- w$ K" j& V3 J4 @7 f. }6 _{
% O/ u! y& h; C! z$ t) K/ {/* Start the clocks */
2 S$ u8 N& r! p0 mMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
7 W& w& F% p2 n3 `% M3 K' wMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 V( l* Y3 [3 O/ gEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,1 s2 u8 t# a) e7 I% t2 Z
EDMA3_TRIG_MODE_EVENT);
% C1 s# U! j3 v: k% s, |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 R2 ~  m4 u. @
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* _! L; D  d" }5 }) MMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 W+ Z( a7 f. I; `! m) Q- ?2 v: v/ p
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
! Z5 L3 ^$ j8 U$ F9 awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
" k) Q% P* F  _1 k  X4 jMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: t! X' ~9 N) k0 bMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: |+ D$ s- M. F$ W; Y3 {- J1 S2 c4 K8 v}
( S4 J7 s5 n: V- x$ T* f5 D" @$ |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
9 v2 Z3 N) M- v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-20 22:25 , Processed in 0.043593 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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