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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10132|回复: 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,
5 c9 ]% {3 R1 k; z7 rinput mcasp_ahclkx,
/ l, I. x1 R9 [, u" [$ V+ Dinput mcasp_aclkx,
) |5 `9 s6 F. T8 x' \' n5 F4 B! Linput axr0," D) j  |, `, X8 B: K- W- l" e
; A. `( W  s6 E' g, j7 [$ U5 ]8 ~6 z
output mcasp_afsr,- h- |" P$ _$ y( ?1 r3 t
output mcasp_ahclkr,
- E+ T  e, W7 \1 m+ W0 f8 ?5 s2 a% ooutput mcasp_aclkr,
# m; E9 e" s+ Z8 {  {output axr1," a9 F* W2 O9 G& p8 j8 F. [
assign mcasp_afsr = mcasp_afsx;+ B+ M" Y6 i  u+ ]$ Y
assign mcasp_aclkr = mcasp_aclkx;6 H# Y, H, e2 \+ W8 i  B
assign mcasp_ahclkr = mcasp_ahclkx;* z/ y4 O% \3 i
assign axr1 = axr0;

  h- U: R+ K( \# v& ]6 P8 P( X5 L
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 d6 d; l0 e) K% ^
static void McASPI2SConfigure(void)
0 d# i( B, r% e- k5 b( C% a2 W{
2 {+ I3 i4 B. {0 e) o3 YMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
& V8 K* a0 Y4 |- A$ ~, SMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" {  S/ _" S& [6 u% \
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);3 ]  K  n( \2 Y1 h8 E& w( \' ?
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
6 e( L+ {  J3 U6 TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ ^8 ^/ D9 g, G6 X0 ~
MCASP_RX_MODE_DMA);
3 q# W3 [1 M+ C/ n' g8 H. VMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 X* f9 e3 U- a( CMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ L& I! x+ q: B
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
8 y; k2 Z# H" g) _9 F6 bMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! m6 P$ j+ C% T+ \
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) z! ~+ K5 {( l7 S! P" `
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
: j$ r9 d! ]; R+ S# kMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: G1 y, ]: U: T4 UMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 \7 ^+ a4 U& `  N/ C/ SMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
4 x9 A! O4 h- Q5 R+ M* `. y0x00, 0xFF);
/* configure the clock for transmitter */: ?. D2 E4 P$ y5 H. j
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. d% R) E1 o5 A% N, z  w" VMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
! ^$ }' I9 Y( \/ x7 `! ?( |; x" N% sMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
+ a7 r6 S) k- @2 [. T  Y: d0x00, 0xFF);' x  D& [: I/ d

0 }) Q6 F2 v- P  h! S+ X" ^! w/* Enable synchronization of RX and TX sections */
% K, f1 t+ x. m  |* y! Z0 FMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
( s. L& M5 b* ?1 E; K$ {9 Z; OMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/ K, H2 j6 {6 s  N+ _McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
( D# T$ u+ K" ^+ P4 A** Set the serializers, Currently only one serializer is set as. Q4 d. N, f- |" b
** transmitter and one serializer as receiver.' k, @3 O/ Y4 G* l) w
*/8 M  Y' p6 V0 Y1 b7 ^- m- E  y
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; a9 Z, d9 M; T1 x; CMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 Y: a4 a- h% r! O  o: ~2 K
** Configure the McASP pins
4 I" a5 s  \( D1 `** Input - Frame Sync, Clock and Serializer Rx
, y, q. C; H) Y2 K0 c2 p' r9 O** Output - Serializer Tx is connected to the input of the codec 9 P; c1 u6 l$ k9 D" y, Z
*/
" e& J# n: Z. M+ M" ^McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# S0 J$ S4 M2 T4 i9 b4 _5 NMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 i  m6 N4 r0 }9 ~+ z! M7 U
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX( Q0 O  E$ t4 [5 Z+ s9 Y
| MCASP_PIN_ACLKX
; {' |$ x0 S3 S| MCASP_PIN_AHCLKX: w" m/ }5 Z- h  t
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' c( t& x8 V- ^  ~: a1 f7 p; p" r2 F3 MMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
0 @, x) B0 C2 T! f- f8 Z| MCASP_TX_CLKFAIL   S1 }* d$ Z6 M8 `0 n
| MCASP_TX_SYNCERROR# n  ~2 x- Z! ?) P$ w
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
. Z, `6 w$ P& W' P| MCASP_RX_CLKFAIL
) ~! P1 h" m  v1 || MCASP_RX_SYNCERROR
  J) G2 }8 ?) X7 Z$ E9 x1 L| MCASP_RX_OVERRUN);( p& W( p5 p! U8 H3 X
}
static void I2SDataTxRxActivate(void)2 w+ C  B  U/ {% G' o
{; Y# g4 Q# W3 L* E
/* Start the clocks */
' F, Y" L  ]' wMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ f* D( M( @* r& _! r. Z0 aMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */0 y5 f) X8 C( y& h: Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. ~# a- t2 k& O- z( F
EDMA3_TRIG_MODE_EVENT);
4 \$ c9 }0 a4 H2 D" K( qEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
* [1 d5 F  R/ ]5 ]+ [7 EEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 D2 ?- l, p, l" x
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
+ q; z7 M1 V0 B0 [" oMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% ^  W2 r) Z' ^! jwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// G* V& I' Z' f0 O
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);8 h/ t) b5 e7 C2 b) \
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& C; u+ }" D* @7 l}
2 \9 }* X4 [" Y$ f- _" r% {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 Z" ~" V& S! U1 h4 o3 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 18:10 , Processed in 0.041199 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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