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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9076|回复: 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,
6 n* c/ _1 m& d. Q# ^5 L' `input mcasp_ahclkx,
8 C6 P3 m6 ^. Y( @input mcasp_aclkx,! H. p. K5 y5 V! ?; h; T' t
input axr0,6 R! S, v) X: D2 _1 {  [5 z, c

0 H$ f6 w# R8 F( Zoutput mcasp_afsr,
9 x: m! U/ \2 `* e( ^+ T5 Goutput mcasp_ahclkr,- ~# q4 L8 e* A2 z% }" j+ m2 k( a* f1 l
output mcasp_aclkr,
. ?1 G9 Y8 _6 m# ~3 _4 D2 koutput axr1,
( V* \9 u. i4 j7 B' x9 [4 n/ W
assign mcasp_afsr = mcasp_afsx;
; w& v) x2 Y' l  [- Hassign mcasp_aclkr = mcasp_aclkx;
6 C! s) _2 u( Q- nassign mcasp_ahclkr = mcasp_ahclkx;
: C/ n- N' ~3 d" a+ I! Hassign axr1 = axr0;

3 j: M8 T( r: ^* G$ A4 H: y, g) h. k$ X+ m( @: C
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 _# r- K/ u1 i4 m" q5 X# c+ g, X) A3 |
static void McASPI2SConfigure(void)  V1 z5 g- z* Z7 b; A
{
# ~# X, I2 Y) b/ [4 ^9 k- `/ qMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
' I  j1 m9 B+ T! V4 M( }- W5 [1 qMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. b3 \/ c; ]3 U& b9 L2 {* n) \# u) \4 P
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. [, W0 v( e3 m! t1 aMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  m4 r1 H: m6 y2 L) z( N
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 C5 H8 P# W) O0 w0 r4 m  q8 cMCASP_RX_MODE_DMA);7 }/ `* Q8 l" u9 a6 }: x+ R0 _
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 q* T' T$ ^% K
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 u7 h3 q; o% Y( x
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! Z6 ?6 I, `% _MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);; }* q, o6 n6 F# h
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 1 v+ m0 u% _8 \
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ a; ~; J) e: J+ n
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  ]3 t) a7 J# C8 JMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 o+ E( h. I2 g+ X3 W
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,. f) M. A; K- ]. ]4 V
0x00, 0xFF);
/* configure the clock for transmitter */
/ v6 Y! J) P2 ~+ c) P0 a* ?McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);& P, b4 V7 U) M) V) s
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% x7 G" _7 d; {9 `+ J+ r. JMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  }! [* O; g; e' N: l6 T
0x00, 0xFF);
0 }1 A; R, j, E" e( W
4 d' W. B/ W( k/* Enable synchronization of RX and TX sections */ & J' q; E+ h6 t3 }
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* D# x8 R5 q: }& IMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);- v9 X- c4 ]. ~" f+ Z
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*# b. F& x0 g0 m$ n  q6 T/ p
** Set the serializers, Currently only one serializer is set as5 C$ v( M6 d$ |+ T8 V8 y( n
** transmitter and one serializer as receiver.8 h7 s$ w; [2 }2 Q( v
*/9 {+ c3 i1 d3 C. a3 p
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);+ s8 P  P3 w0 W7 {
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
" x9 ~  a1 P$ s7 [% f5 ^* `8 K4 n1 g** Configure the McASP pins
$ H9 Q7 U# H$ q* S: n, z** Input - Frame Sync, Clock and Serializer Rx. F( E2 Y! {# c- P
** Output - Serializer Tx is connected to the input of the codec
: z0 C3 ~; H7 ?  D$ H*/
- o& n) t& X) C- @5 rMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
% I2 V6 g' ^* o8 F( G5 ZMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 [- L0 V; _" e
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 @' d) x4 j! @& o- g1 {* {% F| MCASP_PIN_ACLKX- e( Z+ n) a. A* P. k2 k
| MCASP_PIN_AHCLKX' K" ?; n- \! m6 q) l- ~
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* c  _' T  D+ S8 e( I8 C! |
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
% I1 ]4 W  ]1 D! ^8 ^| MCASP_TX_CLKFAIL
  W) s) R! W; L7 }| MCASP_TX_SYNCERROR
; R# K5 I$ K* i: p* o+ }( @9 T| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 8 D: X0 ~1 ^( E7 l
| MCASP_RX_CLKFAIL  g8 G9 _8 \! T. U, W0 w- k' M" j
| MCASP_RX_SYNCERROR
7 e+ C  V9 w' e9 k! k9 t: a| MCASP_RX_OVERRUN);
3 J) R+ a7 s$ ~}
static void I2SDataTxRxActivate(void)" B0 s5 p0 q: Z) A' p4 ^
{
5 j: t9 T( R. j/* Start the clocks */
6 ]: n* c, {  i3 @: mMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ r6 E5 {1 o% r7 L) M$ q( PMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 _( X. B( s2 E- M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  Y+ j1 v0 |: \- IEDMA3_TRIG_MODE_EVENT);: m( w& t" n+ V( g9 r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + [8 Z- U! Z6 }: N
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */& U! K) B% f' K8 {5 w
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 @) Q! |7 n+ O$ P7 nMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
( D5 t5 O' p- s1 Hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 F1 P% G$ F  j# Q
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);  L1 @9 E1 b( w# f0 @  ~: S1 y
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);2 u# ^3 j2 t. H. {; H0 O
}
3 J5 C% v% y, p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

/ |4 q- A, z1 G4 [3 c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-17 01:01 , Processed in 0.038705 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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