MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
, V3 U/ p( q$ t: einput mcasp_ahclkx,
6 F9 j7 x, @0 G2 @( Linput mcasp_aclkx,
, F9 \8 U4 |+ k- v6 a: }input axr0,0 S0 m3 L" \+ D! p. _4 p/ Q! {* L
8 [4 h& S3 s0 s7 b) L6 h  f0 y
output mcasp_afsr,
: s* h2 D4 @; L3 ^) g( V% {output mcasp_ahclkr,
  n, R: q7 z( Toutput mcasp_aclkr,! G9 j3 f; @3 F/ N& x
output axr1,% p9 }2 a% `- j
assign mcasp_afsr = mcasp_afsx;
; S9 r: l2 F; ^. F* zassign mcasp_aclkr = mcasp_aclkx;; c+ K$ y' u  {6 s
assign mcasp_ahclkr = mcasp_ahclkx;9 I' W2 @  U8 r+ R) m
assign axr1 = axr0;

- H/ z7 ?3 U; z. W6 _9 X4 E, M3 U4 f8 B0 G: ?8 m# \% X+ V5 d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

* N5 c1 v0 ]( R! C0 U
static void McASPI2SConfigure(void)
5 m8 P' y' L5 g" t! `{
- N: M3 `/ Q5 s" nMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
! I; t7 {2 \4 X! p) S0 p/ tMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */7 I) J: b8 B: ^0 R6 u
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);# E; B8 X  @0 _3 o
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) ^: z) ^1 ]' m% W! _" t  j3 xMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 Q* B/ @5 s/ J7 o' \7 Y; E$ @
MCASP_RX_MODE_DMA);2 v  ?; P5 v, Z' h+ Y
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 }4 X+ i- P: C$ g9 g  hMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
& `* {& |! C: x: @! O2 C0 VMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 y& F( h+ C9 @; n& h, A( XMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);6 x. U+ h( @4 C+ Q1 [& I
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
+ V, }' H, e. |: hMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
* z# G; t, K! }7 u$ n+ ~McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 n: Q/ ^4 U4 ~! G4 O9 \McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
, n$ f' C, U  u4 K7 a; V6 fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,. m& w0 n' D6 c
0x00, 0xFF);
/* configure the clock for transmitter */& d1 ^# m) U8 Y5 F' s: z. b
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# }; v: ~$ u, X* _% U
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
' n2 x+ o1 t, W6 h  m' n7 MMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. U5 K, o. R, P% W$ H! f+ w! v  P7 n' b0x00, 0xFF);( L% c+ o2 y" S$ S8 _3 I
& D6 U- @) V  I7 {7 n, B
/* Enable synchronization of RX and TX sections */ 9 L4 @. d& Q, u' c
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */* F5 n( q8 i; p$ p* t3 v  b/ n& ^
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
! D4 D" `5 {/ Z/ h# g' gMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- ~; F- ~& I" {$ p3 r* j& _4 w
** Set the serializers, Currently only one serializer is set as. _1 _8 Y# ]# Z0 B
** transmitter and one serializer as receiver.
) @% ]& L$ I2 K$ p* E6 \*/
" u$ x! @, e) }) O' NMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 I% I+ V/ q, I
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
2 O. y( X+ ]1 d& g4 r** Configure the McASP pins
. C5 w2 K3 m; k" q6 Y5 S* t** Input - Frame Sync, Clock and Serializer Rx3 J2 L) t8 d8 Z% ^4 B/ h, u' z
** Output - Serializer Tx is connected to the input of the codec
9 g5 O9 x5 Q! r' s: a*/
$ n, h0 S: P- o: T: p: uMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
* p$ ?; U: V4 z  ~McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));; `" j7 z0 A; j; e+ C
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX: d, [* y. g* z3 E; l/ E9 w
| MCASP_PIN_ACLKX
  z6 @/ t# C- U# C  k. z| MCASP_PIN_AHCLKX1 x1 W1 b/ c" E# V$ Y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) x) C% B  @9 C$ n" j
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR , ?% l" C3 Y* M) z
| MCASP_TX_CLKFAIL & w  i4 W; H! T7 n9 R; m
| MCASP_TX_SYNCERROR: E( E0 \/ O: Z' U; T
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - l8 k0 s6 A) h+ h
| MCASP_RX_CLKFAIL, C; f) O9 f) z$ X! v
| MCASP_RX_SYNCERROR " I/ ?: ?. j, u7 V' ?$ V: o) V
| MCASP_RX_OVERRUN);% r8 M7 W* M# ]9 {7 \
}
static void I2SDataTxRxActivate(void)
4 r7 G1 {3 T! _/ T' ?0 W; {. k) D{/ v9 P, d" P# V( F) n
/* Start the clocks */
1 p& T9 n; {" t8 ^McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# s1 e5 f: p( BMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 L- z- K) {3 W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,0 `9 m7 o( x2 m2 N( v0 d' D
EDMA3_TRIG_MODE_EVENT);9 p" {2 z, `2 L; h# }4 Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
9 w8 e% @5 K. p# T2 Z, r5 x$ W2 pEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% K$ i0 L% L' T# OMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);# r6 m# u4 w% J" L1 @
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
: }' o: ?  W7 [( T8 R3 Dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
  T& z+ m$ y4 |McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 J( ]  u5 |* M. ^* r. S4 h3 OMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
; ~8 D5 |$ _7 m0 o# Z4 _! i}

( d7 ^# B# B$ z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
4 n; }( ^: y2 p& L' ^0 ]& C( h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-2-11 01:52 , Processed in 0.045037 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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