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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1206

积分

金牌会员

Rank: 6Rank: 6

积分
1206
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
& g9 P. i, j& l9 K8 iinput mcasp_ahclkx,
0 _6 b; s; {% t2 M! z2 W* j+ cinput mcasp_aclkx,. g8 B$ A( p! c, _
input axr0,8 i( t3 V( Y- k% h: V
' {1 J4 {. w( E1 W) L
output mcasp_afsr,
; g" K+ }8 e1 B$ K# U1 R3 Joutput mcasp_ahclkr,
3 Q( w5 u4 a- L9 R& Aoutput mcasp_aclkr,2 q0 @" ^; u0 |
output axr1,
) z: h3 @0 h; L+ \( |8 n) o
assign mcasp_afsr = mcasp_afsx;
8 {6 ~8 a0 G, p5 `% {/ l- ^assign mcasp_aclkr = mcasp_aclkx;/ C$ g, N! B5 Z1 V! Y% R
assign mcasp_ahclkr = mcasp_ahclkx;
  V7 b8 p: y. S$ _; l7 Massign axr1 = axr0;

; p& c' L, V( \) [! t0 m: x6 F# s0 @) z- ^
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 L- E7 n5 E4 l$ Q1 A- [
static void McASPI2SConfigure(void)
* v5 k5 I  ?2 \{
; G; r/ T/ y6 a# YMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
' s9 K3 }/ u( vMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: Y( g5 L8 S! _/ h7 jMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);6 u: N. o# F& z8 A7 W
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; N' Z$ R) p6 G. Y8 C9 J( u! SMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 K; }/ [" I  U  RMCASP_RX_MODE_DMA);
2 ]9 P1 ?# b# F# f- q, A) LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! E7 C3 U8 D( a$ k
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
- h) Z1 }; n, j) I. ~  TMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 p3 O* G' o. F6 y* K& F7 S' rMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
9 g" {8 H& n( L; q0 pMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; }; H7 `+ @! c+ _9 b7 S; @" B3 ?
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
/ f: Z3 ^# Y! c* X4 f; @McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 p4 T5 f; U) ~
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
/ W2 C$ p6 H+ s' _* VMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
" Q- r1 p  n$ s* l# T0x00, 0xFF);
/* configure the clock for transmitter */
$ j9 S; S2 }7 kMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 l4 m# s& z( ?5 a6 DMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 2 {5 d) l$ u4 T
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* a9 G; N0 {. A; c  T* S0x00, 0xFF);" C% X7 [; I' A4 e
9 ]! V9 G2 G8 T3 w5 F0 p6 ~
/* Enable synchronization of RX and TX sections */
* N, C6 U- y" R5 S% |8 }3 CMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */8 b/ G' G+ c# n. j
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 v9 `2 F$ E2 A# C+ p
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" Q* X* Q+ q/ T3 O+ ]
** Set the serializers, Currently only one serializer is set as& c0 K: m9 \% I! \; D5 Q. S1 H* h
** transmitter and one serializer as receiver.
! G6 Y+ E8 L' {# u*// f. |. i. C# p: n* d
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ _4 F" E0 G/ q% n- S
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: ~( s# i* [9 J5 }& }1 L** Configure the McASP pins
4 T/ s) @' G. e% o& X# Q' m** Input - Frame Sync, Clock and Serializer Rx
9 p% ~( U& M1 i9 h; [** Output - Serializer Tx is connected to the input of the codec % r( b% v- ^6 P% i- y2 b
*/
  e; A4 h0 j  P* M4 f; @0 [McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 s4 K, h3 r* A
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
3 l& A- V4 H7 k' AMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
6 U4 t& k( ^+ c| MCASP_PIN_ACLKX
% H6 Q3 b3 t- [5 @. A  R' N| MCASP_PIN_AHCLKX
/ W  [( W# l$ N' n) |1 ^| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */6 U$ ]* S  d2 l/ a. v' S7 ~
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 D& I" [4 x$ C& E7 B! m
| MCASP_TX_CLKFAIL
, L3 }( Y1 ?# j* n| MCASP_TX_SYNCERROR
- a/ U& x. }5 N( J  X. h| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
- X$ o7 b6 n: R2 t0 {| MCASP_RX_CLKFAIL
1 R  s9 T0 H  r# E| MCASP_RX_SYNCERROR 8 d4 B# I! y) h% \9 G' K. {
| MCASP_RX_OVERRUN);
9 ~# G; S" q; Z7 W  z0 T9 t}
static void I2SDataTxRxActivate(void)
" F3 C1 R/ }* z# Y0 `{5 t' v: o5 F" {/ Q
/* Start the clocks */
: b, j# G/ M+ J6 aMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);. j7 V2 C4 Y) ^  X4 _: A
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 f, q0 h/ S. t4 _
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
$ ^4 {& Y# h: t1 q  F- L9 ]EDMA3_TRIG_MODE_EVENT);& G8 _; j. W* f6 V, l" q; G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, . e2 v/ T* T# C" @
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! W/ t; d3 h3 a6 ?) q5 Q2 n# Z
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
# c8 u0 G. ]# _, |McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' C3 D" O+ m6 u/ k$ n5 i" P" ?
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' X  V7 T/ p& }3 G, X9 HMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);* |) y% M0 n( I6 b
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: k6 C; X- w7 i* }1 I5 g, U+ H" m8 I; Z8 V
}
( _; b: H0 @. j8 e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 A& @9 H7 f& Z# s) ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-15 04:44 , Processed in 0.041682 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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