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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12837|回复: 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,
+ q0 ]( j$ g0 e& uinput mcasp_ahclkx,5 A8 r6 x% r7 I
input mcasp_aclkx,9 [) y* y8 {# k5 ]# K
input axr0,
8 m6 m  g* E, r2 p( x+ ?/ v) V4 @( _2 F
output mcasp_afsr,1 z( U8 {+ f" R2 t
output mcasp_ahclkr,
# |3 |7 L- T# @8 L, s6 @$ b9 Boutput mcasp_aclkr,2 s9 }  b9 a: C0 _# z( ]! w
output axr1," n4 F& V' G: @! D6 h
assign mcasp_afsr = mcasp_afsx;
. q$ O3 D3 n. S0 @$ massign mcasp_aclkr = mcasp_aclkx;# ?8 q' w% c6 x1 _3 H1 Z+ C
assign mcasp_ahclkr = mcasp_ahclkx;  s" V& w) Y! R
assign axr1 = axr0;
( ^5 M9 M) h  q* R% M8 ^7 {8 s! w
4 p$ p  e0 r% r) e- b$ o* X% W; ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
% l! ]$ g3 R! M
static void McASPI2SConfigure(void)9 f, h8 G9 h" c: \- d
{+ Z' n) Z4 N, l
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
" W  V% U$ I" m2 LMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ V  ~2 o7 k  F2 e/ U0 y# |
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
1 D' f8 Q7 l# @* k; rMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! q9 D6 w# z2 ]$ a5 B- |! x7 XMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. o1 w1 ]* G* P: ^2 IMCASP_RX_MODE_DMA);# l4 E' W1 i1 K8 B0 e- G$ Y( Z0 T
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," u" U0 y4 z" F# P# B% r  J3 B
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 D3 n5 u3 }) y" n
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   _& Z+ v* y5 j
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# G6 ?1 O! V% j" B! FMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
; e* z3 M) V  uMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
8 n+ c8 v8 N( iMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 {; r/ \9 ^! ^; r! P
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % {/ }* }) I% a  M; y8 [9 ~# t
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
5 m! B" L1 y2 T; Q) P3 q0x00, 0xFF);
/* configure the clock for transmitter */# Y' w! @7 q0 |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. g7 X) e2 T4 [* s3 v" q9 q+ g" U
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 7 F( j! Q; D- a. ]; J0 P8 ]
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
/ q5 X; g! {2 \+ g1 z0x00, 0xFF);7 F2 T+ J) z0 m: T7 B* J3 X9 M- [
8 d0 T) X6 q9 k" K
/* Enable synchronization of RX and TX sections */
1 P2 ?( b3 }' n; l0 [+ s  LMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */: ?# p9 t' ?+ s. s
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 w) {1 v/ X# v6 r  p% _2 tMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. z9 @' y3 g* k! a
** Set the serializers, Currently only one serializer is set as
$ f% Z1 K, D% n2 l' ^& A- [** transmitter and one serializer as receiver.& _, O6 X" p$ J( P
*/
" ~. f1 W& G$ P. H8 _McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
0 b8 [+ Z1 \4 B6 h. ]McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 d: Z  q9 z6 \1 [. Z5 }1 n** Configure the McASP pins
, m) |( S$ m) E) R- o5 Q** Input - Frame Sync, Clock and Serializer Rx! q& `8 m4 ?9 h) ~0 r/ n+ d' B' W
** Output - Serializer Tx is connected to the input of the codec
! k4 D* a0 H1 `$ ?% {! ]*/
# I; E% D& ?% d2 x! KMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ [: |1 B  P' k% G
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ o6 J2 V" b' g+ _) q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% h* R  F/ W, o1 C. R| MCASP_PIN_ACLKX: C$ O& E; |6 }' ?3 J
| MCASP_PIN_AHCLKX' f( }- @4 M7 q9 b
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  i- h4 F. U3 qMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. j0 Z% u& r+ R* ?) u: |: K| MCASP_TX_CLKFAIL % C" K7 b- |+ X. M
| MCASP_TX_SYNCERROR
/ J# F/ p9 a* m' ]4 ]7 h$ S| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
0 G8 O3 Q! U' F| MCASP_RX_CLKFAIL
) ?2 C7 Z2 O9 a2 T| MCASP_RX_SYNCERROR + a7 f5 C: ^: p/ W( V4 d! b5 a
| MCASP_RX_OVERRUN);4 t6 h6 T$ L1 I8 F3 g/ S/ V
}
static void I2SDataTxRxActivate(void)
8 w/ C+ e: |& I; ]6 x! F8 i{
* q0 N6 I( U' t: o! a0 u/* Start the clocks */
) K5 e, L# @' w# T; T2 rMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
2 b& S1 r% ^" ?- O) r  sMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 W5 t  F- O* m) lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 F1 g$ A; }5 y2 H
EDMA3_TRIG_MODE_EVENT);0 h- P1 ~+ y5 X8 {! i; ]2 E9 }
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, % z* f; @9 s3 y9 }5 A
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 g8 j# u- {* p7 G7 ~  x
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, Y- E+ ~9 _5 @. K- h0 C3 j, CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ E) b. O7 v- |3 P; J% r' lwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' Z+ t+ F+ v5 |McASPRxEnable(SOC_MCASP_0_CTRL_REGS);  T( X0 j- }2 \% c1 e$ M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);! ^  W% ~' N9 Z5 O0 W/ z5 z& o" \  t
}

1 }& E. p  P( x2 v, ^6 W" _; o- T
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ U" G0 _; N. N9 y! G' t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-4 11:57 , Processed in 0.046614 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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