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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,$ m% c) X: V5 Q# Y2 C; m
input mcasp_ahclkx,
& j1 v4 {$ H$ q9 K% Einput mcasp_aclkx,
! y) S. q3 Y* @( v6 u+ |1 tinput axr0,
- x) a3 j# H% _- `4 J5 ^! |! O; _* |& Z8 ?
output mcasp_afsr,
/ c! [+ G/ O9 {: U# L4 Eoutput mcasp_ahclkr,
5 A% g' \2 [, a; m% toutput mcasp_aclkr,
* H6 U/ v! U+ }8 o% t% soutput axr1,% i6 a( S' o; b' N# Q
assign mcasp_afsr = mcasp_afsx;% M2 G7 a/ p+ J, o2 L
assign mcasp_aclkr = mcasp_aclkx;
  Y! M9 [' u0 Fassign mcasp_ahclkr = mcasp_ahclkx;2 t) z7 ?! I( b8 |
assign axr1 = axr0;

& z+ I  J$ Z7 V8 z. x4 e( H8 p9 g$ g! q2 X5 w8 o9 m
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
$ N% F/ J7 V% ~/ C; V0 g+ u
static void McASPI2SConfigure(void)- |; K3 l% k- {3 J) N/ @! J
{
- ^8 T) Z5 i3 w4 X1 M! g: j) C% bMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
9 g5 h, _* D! QMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
5 r. J( f6 x' b4 p! g9 EMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);" w) v) s/ i! P  n0 A
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */0 [5 e- ^# R! K' o
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 ~4 B3 H3 S: o% W: [' B' {MCASP_RX_MODE_DMA);' y( o  w  J6 P' P' ~
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! G( m+ m3 ~* L# CMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* A& G" }$ U  n/ x6 i# oMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   H! W# |6 E$ p9 q$ F: [
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
. a, ~3 C- j4 W0 s5 C1 yMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 j) V7 s/ N* f! O
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) {9 [- Y1 W5 G6 r# n5 VMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; ^; a7 {+ R. V
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' n( D1 d6 G) K& @
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! n* J4 |4 v* h0 v0x00, 0xFF);
/* configure the clock for transmitter */
  d# X. v5 \0 eMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  m$ m; k: P0 z# d& G2 R& C
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  |2 _1 E3 a2 }8 l8 v9 CMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 M0 F0 f+ f& m1 k5 e8 N2 A
0x00, 0xFF);5 T' _, j4 q8 P! V; \1 o

- v; D8 T4 G, D7 ]$ E! |9 l5 E/* Enable synchronization of RX and TX sections */
- w& _5 W0 @7 B" P8 d/ y) F) tMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; {: J2 f. i$ P
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);, O4 {5 T1 i: L* D2 ~# e
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
" u! b" A- }& k) m& L' k" o' u/ q1 q9 U** Set the serializers, Currently only one serializer is set as
( r4 R1 Q( A! ^5 @! Z: }# i** transmitter and one serializer as receiver.
" q4 f9 |8 x) }6 p" b*/
! p/ G! r4 h0 G* x) C) P. yMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);3 `7 s% v+ B( H9 ]
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( u6 j7 L. f; y1 C; a6 I** Configure the McASP pins
. [8 @' ^! L- ^. y6 \- D. D; Z** Input - Frame Sync, Clock and Serializer Rx& w' l' Y( f9 `7 i9 o1 y2 d
** Output - Serializer Tx is connected to the input of the codec
* M' D' e, o. ~! F' k/ t$ L8 ]*/! B! d, E2 _1 ~
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);! {8 a  [; I  \7 u( Q8 E5 h
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 t9 f5 B( K. C
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 X, p( L) c4 Z5 V3 v# o& U8 |
| MCASP_PIN_ACLKX" c, t* A' v2 ]. Z% m' P9 H
| MCASP_PIN_AHCLKX
% O. U- q! X  {: J+ S$ k! t| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
. i; j/ }$ k9 G- KMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # n4 P9 j9 `. T4 k6 A
| MCASP_TX_CLKFAIL 4 g; Q( @5 j) v1 y5 c2 X$ f4 U
| MCASP_TX_SYNCERROR
" ]: }+ G: j& l) @9 ]/ ~$ k| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 h8 Q  k7 @$ P+ Z/ F& v( g| MCASP_RX_CLKFAIL
1 V2 {5 e; L& K1 R; d8 ^| MCASP_RX_SYNCERROR
& n  w/ k0 |) y6 ?7 p, \- ^| MCASP_RX_OVERRUN);
% l0 y- E  n+ f: S}
static void I2SDataTxRxActivate(void)& q# z/ N7 N: W
{8 A4 E0 `1 n; A$ O! t
/* Start the clocks */
9 s& D2 X' e" \" n, G$ NMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
( A3 j; X. O5 ~0 n& `) E9 dMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */! F) x( B2 s8 {1 Z1 `+ [* Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; p) `4 u' E9 R* z  y) R
EDMA3_TRIG_MODE_EVENT);
( `5 R. P6 |$ d' z/ L' IEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
' d% s8 \) Q, `  h% g" DEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% U( y( Y) M6 H% v, i# ]
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* [4 L& g+ k" Y9 e2 I& P
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 `' y5 x5 Y8 [# i5 ?) D) Rwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 Y; f* P% Y; b2 D8 U6 P& N
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
, G/ y5 j0 B$ mMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 C1 n3 M0 o: f/ q6 U) ^/ C# R6 |
}

8 p  O/ l: l  b, ^4 ]& Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 N  T+ ]! s% ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-13 20:28 , Processed in 0.046666 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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