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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8880|回复: 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," W3 D) R, S0 `+ j5 K! j) J
input mcasp_ahclkx,; y/ B; q! X+ L) t5 q: P# l
input mcasp_aclkx,7 n% A$ e! [4 l7 x9 j- W4 x  H
input axr0,
: i2 q! z- ?, ]* I! R- i& }- _; b0 _) R
output mcasp_afsr,9 j4 G7 g1 q4 w
output mcasp_ahclkr,' f% u1 L; g! d
output mcasp_aclkr,. Y7 {8 E( C6 a% U4 m9 ~7 ?
output axr1,
7 K) h7 b9 W1 P# Q( J
assign mcasp_afsr = mcasp_afsx;
( |6 @3 K' [# g& jassign mcasp_aclkr = mcasp_aclkx;- b) z# `* M: S8 n/ c* F$ Y5 F. w
assign mcasp_ahclkr = mcasp_ahclkx;
; B( R* L( R- p5 zassign axr1 = axr0;

5 N$ ~' T% {) z) ^5 \2 c% J0 i+ `# {8 F& R
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  W: f+ M, [" c# v  H. n
static void McASPI2SConfigure(void)6 f, |4 ^# |' e% W8 ~# }( m
{6 Q! R9 _& c" c2 I% e. p
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
; W5 e; S3 |7 H5 O+ Y# V! VMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% J/ K9 {" E5 ^McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
5 z/ `2 q' R- cMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 c: ~4 k" X5 U2 g1 IMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  U% J% A) K! l" p# i0 tMCASP_RX_MODE_DMA);: d, \; Y4 [1 Y: |8 r% F
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- q& L* r: P% v: f+ qMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// s5 d8 y- x8 v3 a$ F/ ?% J8 H6 r
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# U' _  \: K; z- c9 L/ dMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: k( g( \( C4 C
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,   w' b+ D" G! G8 G
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
+ p4 X! i: `* ~1 S4 `% HMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* e0 U% u+ E$ j$ gMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % P! w8 g9 H7 U8 R8 R$ v, j/ l' {
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 m0 C- w# b1 R# H5 Q0x00, 0xFF);
/* configure the clock for transmitter */
& _( _7 o) J4 O" w7 r) o" ?" ^: MMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
& m% b8 Y- e! s* C& E% CMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
5 O% x& |* F  r& k& |McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) S9 H  l# `. ]( R  ?0x00, 0xFF);! G' i' C- T) A5 }  |( C
! {  q) U$ N, M7 t4 r) S: T, |
/* Enable synchronization of RX and TX sections */
0 M) P& {6 C) ^McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- m, J) V' `# r  iMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 H8 i! G# K; pMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 m) Z6 d2 h* S- U; Q
** Set the serializers, Currently only one serializer is set as
* u- \( R( U' R9 R( e; p4 G2 @0 E** transmitter and one serializer as receiver.
( ^: {# D$ f! r: g  o. U( T/ V# @$ v*/
$ L$ F" f: H& X1 B- S2 aMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' y8 Y8 H' ?5 R. ]McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* e  b7 B: ], S% d3 b3 R5 O4 q** Configure the McASP pins
5 m- z/ w: P, F& ^! U( x** Input - Frame Sync, Clock and Serializer Rx
4 \) }) ?  x: o1 e** Output - Serializer Tx is connected to the input of the codec
: q( q  r8 n5 n+ n; P$ W0 I7 q$ H*/
% j0 u% {6 g/ ^- a+ H& E6 _7 CMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' _0 `+ r- ^& r/ e' w) M* [
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));% E0 m5 [- d+ C8 U( V; C
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX, R+ q% o, ]+ _0 ]% X; d7 M
| MCASP_PIN_ACLKX/ u' N" V% ~7 m7 g7 W1 n! \
| MCASP_PIN_AHCLKX
1 [0 R% B. F* a| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */2 ]9 Q0 U$ w3 u9 K5 d! E7 U
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 Z7 R; X! D: |: r4 || MCASP_TX_CLKFAIL
* X1 ^6 _3 L# y| MCASP_TX_SYNCERROR
& r( w' o) ~7 P! v| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR   W/ O3 L! N" P4 N
| MCASP_RX_CLKFAIL. ~! D: E/ m( k4 H0 z6 p* F
| MCASP_RX_SYNCERROR . u- P4 M# [+ B4 `1 a2 t, q7 S9 L
| MCASP_RX_OVERRUN);8 |2 ~6 C& A6 y/ }/ P  @
}
static void I2SDataTxRxActivate(void)
% u, r  y; h3 W" V0 R% ^2 n{, K2 p, p# }9 l# g; u( {7 {  n
/* Start the clocks */' K6 p9 q' z* [+ {
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
* W6 i; ]  K* o4 qMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
$ R4 |! x: A- V! g3 c$ ?5 JEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  Z0 K6 Z/ [( i! {3 Z# d
EDMA3_TRIG_MODE_EVENT);% t; w, j) ~9 ~& N2 p5 t5 C
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
8 v0 _  R$ f3 d! o' W; t8 fEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! S. c, G3 O$ E$ ^McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" K& }+ Q# u7 j! ?5 t% c
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */! O. F% u/ T- ~* V6 H9 w# r+ O" ]( Y
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */- l) o6 B' \# Q* S6 x
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 B( A; Y& o; J8 u9 Q# g% ]+ {McASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 T  [) s2 I; Q0 J+ e7 `
}

# \4 b, ~2 P) K5 @3 I
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ [. t# R: i% W, H6 [3 `2 G7 `" X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-8 20:09 , Processed in 0.037437 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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