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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10110|回复: 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,
. z4 `3 h# O! ?$ @* b) Pinput mcasp_ahclkx,% @9 Y( ?( ~' a9 S! x. K; _, u
input mcasp_aclkx,
# Y2 }3 K3 z5 Q+ P' d' C+ s- jinput axr0,
# n( O! X9 J  `, q- J& G3 O9 z0 g* L* i  o8 L7 I! \! V
output mcasp_afsr,) m5 C, p+ J$ w; E+ p
output mcasp_ahclkr,: n6 v2 W+ C4 g+ A! J$ K% }
output mcasp_aclkr,
, e" i( L; r8 q4 G, Voutput axr1,
6 Y7 Q% R% x6 j" N
assign mcasp_afsr = mcasp_afsx;
; ?( p2 |4 {' ~" Y1 U7 Z' K9 U- Hassign mcasp_aclkr = mcasp_aclkx;4 `- S$ M' N. E& x2 G& g# X( Z& v
assign mcasp_ahclkr = mcasp_ahclkx;8 x) e, `2 ~  ?0 R  z# l- Y1 m5 p
assign axr1 = axr0;

  R2 Z+ J/ N) t# v7 L
/ f4 Y) x8 C6 e. P' W3 |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
7 r6 [1 X$ g( H* `5 [0 F! H1 a9 c1 [
static void McASPI2SConfigure(void)- ]; f8 ^+ F# O8 ?1 O2 v+ ~- |
{
0 U* Q0 U2 x, b/ d% yMcASPRxReset(SOC_MCASP_0_CTRL_REGS);3 K! O6 x% [9 e  u1 [
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% a0 C7 J. j4 q4 i6 nMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);2 ]# W4 q/ ^" e; e! N+ l8 U+ D
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
# |% _( p4 H( H& U: |, F$ kMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% N- v* M1 O0 [, D8 C
MCASP_RX_MODE_DMA);8 y  F+ Z  u. B* a, K0 S
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 }1 d+ w3 C( i; I- t; F' M8 cMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */. r% g7 A9 k- n% @' ~$ V# Q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, * F7 V% ], M8 G4 s. r) A% V
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: W  |" |. i+ f. ?8 W
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
6 @4 P9 Y% R* x- aMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; z8 x1 R4 k: ~0 ]/ r
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* F/ n# E/ t5 Z, }; v- f: }
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ l& c+ U. q3 s. t7 QMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& _1 U# x' x; ]* f0x00, 0xFF);
/* configure the clock for transmitter */5 G0 U' k7 d0 X
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
  R+ j9 j9 {3 H9 ^McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 1 m. @: T0 d- j) J- {, l& T& S3 t
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 _  S, w3 S/ i  c% O* R* J% o! T
0x00, 0xFF);
, t5 y# E# w3 d* {& n. V
6 [8 Q; G0 ^1 z# }! u5 _/* Enable synchronization of RX and TX sections */
0 g* v9 R0 \% w! F3 z( ~: V- Q. aMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: [$ J( ?3 G: mMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 v/ _3 t- Y/ J) ^# XMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
6 s: z7 H5 y3 R! e** Set the serializers, Currently only one serializer is set as
/ N1 N- Z" R) |' h3 {* |1 s" G0 p** transmitter and one serializer as receiver.6 `2 B1 F1 D6 t% C8 ^* T# `/ X
*/
4 B9 a7 U! s8 U9 p  V6 D1 eMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);8 ^* v" w4 \( ^# t$ O* m- a
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 m$ z6 t8 V' ], g# v
** Configure the McASP pins
3 E( B! {2 x" S" C5 v" H! ^- H2 n** Input - Frame Sync, Clock and Serializer Rx
& \6 H: K" q4 ?, s** Output - Serializer Tx is connected to the input of the codec ! w# c% e2 ~& d6 m
*/- U6 i" W6 m" G; M0 {
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 J$ [  r1 _# L3 y, e
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));% W0 T" A; G4 ]9 h0 ?( J- e7 H
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
/ T, y7 Y: q! O( D$ f/ l; A4 F- B| MCASP_PIN_ACLKX6 t* ]: v; B9 H
| MCASP_PIN_AHCLKX
) V' d# d/ p  t' O9 {" {: S! V| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# Z- y. l2 ?: z( k8 A7 N+ ]
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 7 N' t. f1 R! w7 T5 O# p9 v8 p9 Y
| MCASP_TX_CLKFAIL
8 @& e' x- _# b3 |. e| MCASP_TX_SYNCERROR+ }7 ]; X1 q( g% T
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 7 R1 ]- Y5 W- N; n
| MCASP_RX_CLKFAIL  t1 E! D7 [% f, L; w* E. t
| MCASP_RX_SYNCERROR
9 h) K9 `- x1 D$ ]9 o$ ~! e  I& Q/ m| MCASP_RX_OVERRUN);
' x9 s# v" h; s$ Z7 K}
static void I2SDataTxRxActivate(void)
( N0 Q: s5 `. @- ?! `! g( f! B0 z9 E{6 Z* {$ F; B  ]% G6 [  }6 _5 c
/* Start the clocks */# D( H3 J% k3 J. G; A% ^4 q( U; j
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);: E6 a6 |* h* i  Q& Z
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. k2 ]4 _7 q4 \" Y8 ^/ T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,6 m6 A% \; N8 K; P
EDMA3_TRIG_MODE_EVENT);
# I8 v, s) O2 Y0 U1 XEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 I5 p" ~; g9 v" T8 {EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! o& Q; b( i9 e8 c0 S$ m  z5 m
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
/ K5 h7 A8 |: v, O1 UMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. u8 k5 T7 `5 J' u: X% @while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */) j) t0 s& E) ]1 E8 G
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" b  M  E& l9 E# _7 Q  t" @McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
6 Y* A; H* i8 w% a}
; G& A3 t. T& \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ f# j6 M7 C- ~2 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 00:55 , Processed in 0.040127 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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