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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9792|回复: 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,
1 M) l3 f6 a" Q4 z  o3 X2 R9 \( binput mcasp_ahclkx,
( p. o3 x5 j8 m) `6 d' binput mcasp_aclkx,
0 J: S* j! V, d- k0 o  \1 }input axr0,
5 B1 R5 O3 m4 W& k9 P" O7 M  \/ R6 A6 e0 B! A' N
output mcasp_afsr,% v" Q3 z, h9 D% A8 b
output mcasp_ahclkr,; k- H* ^4 u- K
output mcasp_aclkr,( G* C, Z- j, }# s0 Z2 n. U4 ?7 m
output axr1,) X1 }/ O" Y& e7 O: F1 [! K, Z
assign mcasp_afsr = mcasp_afsx;# a6 n. Z- N" |3 I9 W- s
assign mcasp_aclkr = mcasp_aclkx;
. e, i# Q  m  W' u% h1 N# i2 g0 c. H; `assign mcasp_ahclkr = mcasp_ahclkx;1 E" A8 s& ~) r! f- z  m
assign axr1 = axr0;

& Y$ d2 W) A4 @! W. r, U) [2 H! q$ D# u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ {$ B. m2 w9 P+ K, ?
static void McASPI2SConfigure(void)0 K4 ~  Z  \0 O5 c8 V, D# \9 U
{) r; f2 [" n: c" r5 L
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
) p! S' B; J; q% i( q: c! {McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% d7 O5 f; j. N. {/ gMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ x# Z# q) F# U" hMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ K, c4 `: u" f" ~  g" u- U: J  \McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 `: Z3 C% `% M) o6 eMCASP_RX_MODE_DMA);0 C  t" a. ]7 J0 B, m, J
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) [/ |( N, N! \% ]  B1 M& P# j  IMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
3 }) V' x6 }4 c  M9 n& `; _McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 d3 P* G7 ^* a7 Q, w9 nMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
' W1 U- C: o/ M3 E. q! DMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
5 p9 m9 g* f$ k- E+ {- {+ p6 pMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, @: w5 D+ [7 p% V* K$ C
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);% W% D/ ]' ?& V/ e9 m
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 H* H$ a6 ?: f. n5 J; z6 b: P
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% w: @' z3 I! B' N: Y7 M0x00, 0xFF);
/* configure the clock for transmitter */
+ c' Y( X! d9 E" W8 S5 H; x+ ]* [4 e# ZMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 O" I9 I7 p8 I9 tMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( m5 e# {! d/ S5 D1 SMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ e6 `! g0 h$ x6 R+ U, H. H, ?
0x00, 0xFF);
0 ]; G6 A1 `1 X/ e& S8 d
/ [6 Y3 `/ o1 ?" ]9 _  S/* Enable synchronization of RX and TX sections */
! h! e7 w6 Q$ |  J# N/ j# ?McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
% e9 e- ^- q3 h* h9 c& d9 @% tMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 g' H# ]; r& ]: }, A* c5 O
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
; w" u  s5 P& R+ l" T6 J** Set the serializers, Currently only one serializer is set as
( \3 k. x: p) d3 H  \7 ~. }5 r** transmitter and one serializer as receiver.
% O+ w( R0 R4 u*// C6 K, c8 t1 x0 W3 W: o/ l/ V
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& a/ H8 G7 }$ z/ v
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 n; r' c7 |  j* h** Configure the McASP pins
; G8 w! ^8 `9 z' G  l, r** Input - Frame Sync, Clock and Serializer Rx
! [, z; U% L6 {, K. n** Output - Serializer Tx is connected to the input of the codec / m+ x5 S# m. i! y" G% W# M
*/
- F# G- j" {1 u8 W  AMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ f, n& Z' }, j3 p. I5 ]) S
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! i- n5 b) w. T& A+ y! u
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 t% N6 g3 f1 O9 d9 I  i* y
| MCASP_PIN_ACLKX( n8 f3 Y6 L, N, m" U! e
| MCASP_PIN_AHCLKX: x* i* }1 U& ~) }: U8 B
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
! A! \4 H1 a) h0 FMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ F8 j2 d# B8 f7 i3 l| MCASP_TX_CLKFAIL 3 w9 @* b% Y) I7 h' Z
| MCASP_TX_SYNCERROR
2 b9 T- S% U  h( {! {| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 u0 }0 ^2 w: p  _" w+ z3 P| MCASP_RX_CLKFAIL# z3 v6 ]  B* |' ^2 R+ c; g
| MCASP_RX_SYNCERROR
  p5 b- d. P5 u* X7 e| MCASP_RX_OVERRUN);  L7 u$ g: `7 \5 P/ C. y6 o6 k& G
}
static void I2SDataTxRxActivate(void)
/ H# m9 f% |  E! S- N& B. h{
" G* U! f6 p# Z* A' j/* Start the clocks */1 a8 g( y( ]  ]
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% l/ y5 @. X; U0 v$ ^7 \
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 h0 l" g2 Y1 pEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
3 S3 h0 j( B+ _2 e& c- I$ t. f0 ]EDMA3_TRIG_MODE_EVENT);; h) d9 a. k4 z% a( X+ U% U
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 {* b9 |4 y, S- {7 d% `- j. j
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) @6 J3 w: X: _0 e( X
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 s" N4 ~( O& y  @( a( vMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 b# `& Z, ^% y& l, S
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& z+ V1 j! {" O* l3 U# zMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);1 @+ p8 X8 J( a% t, ?  S
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
/ G7 d7 J: t  u7 h4 ]; l}

. B& c2 b0 ~" V0 P% R! e8 D, n
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ m$ F' q) F7 Q" V  c; ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-20 09:17 , Processed in 0.049020 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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