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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
" l8 s6 \$ l8 `input mcasp_ahclkx,5 Q( @+ z+ E# B- P4 D* U
input mcasp_aclkx,
# S$ L# b6 {/ A0 Vinput axr0,
; j4 D  L5 B( u. j6 b
: @! O( R% }5 I! Xoutput mcasp_afsr,
* g9 W$ A) ~7 x7 Routput mcasp_ahclkr,2 r( m1 P4 v5 x" I, K% U$ w! M* }
output mcasp_aclkr,
) ~  l3 w2 |9 F& eoutput axr1,8 m& @, w) d$ N$ @0 b
assign mcasp_afsr = mcasp_afsx;
1 a1 w7 [& R: `0 Passign mcasp_aclkr = mcasp_aclkx;
+ x/ F' N2 |) @; Oassign mcasp_ahclkr = mcasp_ahclkx;
) |* z. J+ x% J, Y1 zassign axr1 = axr0;
- Z! P& T9 c* j( N& s
% I, v' Q# ]" Z" E- |: ^
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; {2 W$ T' A" z/ v$ V# s5 R! @
static void McASPI2SConfigure(void)( R  }4 {2 T$ r1 r0 q
{9 Z# N  r. L4 x  H& [% {) @8 I
McASPRxReset(SOC_MCASP_0_CTRL_REGS);  n3 V* {$ H* v# k. s9 }
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
( }) Y5 c. @7 x* U( O* C! nMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 J& p! ~) r! h7 ]$ C( w2 R
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 C6 x) \+ t, P( d1 C! `McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: F2 }' I9 u& k0 y/ S
MCASP_RX_MODE_DMA);
" Z1 ?5 I1 y4 T3 F+ f& {3 g( hMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 g# J& V: w' C* _) p; I9 M* E3 g
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */) d0 z% x* B) U, T# I- a# D" \
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) {: K) L9 b: ^$ k8 x
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
, n: x; n! e9 C8 P9 dMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
4 Z. j3 D6 j7 K% L$ M. s  B1 gMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# J: }4 n2 q# O' ^McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; y6 c, ~" o2 K$ r% p. i9 B3 p0 s
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); / _. ?; x7 |( x: H8 g$ x, U
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
; _, H$ t, v; _' l9 x" P0x00, 0xFF);
/* configure the clock for transmitter */
/ V0 j6 e0 S1 f7 V5 G) IMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" `5 D% _) P% D. D
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); $ [0 Q+ I8 m. i& G$ _" T7 H5 N
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,6 ?# i# Y( x& e# V; v
0x00, 0xFF);4 M  d. r% T0 ^" L
+ q, u. Q: Z" y( q3 O+ z4 ~, k/ X$ d
/* Enable synchronization of RX and TX sections */ 5 t& f9 I" `/ B, Q! K
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
3 [* N6 L: V* }/ x* j" ^McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' g( {1 g+ \& _% R. l* `McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 x0 e. }# S( P% ~6 K( [4 m+ S** Set the serializers, Currently only one serializer is set as
/ E. B7 [) k  G3 J6 k6 A, W, Y** transmitter and one serializer as receiver.1 a8 }/ N( Q: ]  i7 D
*/
/ [. r" ~* @8 P5 \" Q8 yMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
. X: R+ ?$ o. D  Z& C& ?7 gMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' U4 i8 ]  @1 t, ?7 c/ P
** Configure the McASP pins
: u5 a3 E5 [4 X& a0 T. X  ]** Input - Frame Sync, Clock and Serializer Rx  K6 C; f" t: T0 L& ?! B
** Output - Serializer Tx is connected to the input of the codec " x5 Z3 v; i1 }% q' P, |) z
*/  m$ V* F* F$ z) U- X0 o
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) z2 s5 z: r) R! a! N5 vMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
6 R; G; F* S3 i! o# _' v$ O/ L: LMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
/ f# b' _2 g( o$ b| MCASP_PIN_ACLKX
$ h# p9 ?$ S! D| MCASP_PIN_AHCLKX" s8 u, k% n) c% x3 h' H, v
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */2 k; @; Y" B" `( Z
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ x7 R5 R* r6 U# D/ L+ `4 M& i| MCASP_TX_CLKFAIL
2 \4 m/ O0 k7 L$ Z| MCASP_TX_SYNCERROR' [2 _) x: U4 P: R" v8 q
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
8 A& p+ y: V% t4 t; D; J1 Q| MCASP_RX_CLKFAIL
0 o" D* s5 U' M! ?# K; b| MCASP_RX_SYNCERROR
! n- P% f# Q+ g+ r! e2 z| MCASP_RX_OVERRUN);9 h  Q4 H: f, ]* E9 z0 U9 i4 m
}
static void I2SDataTxRxActivate(void)
: m6 w" b1 q" a{" v$ S( d; r9 }' b# c  c+ G
/* Start the clocks */, p* h* c1 w! |  X# P! }
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 v& @/ E. H* R* C: T- d
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
' r- B' H& @+ @& D& G9 tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 x: J$ v& \/ k' N% U$ V& @EDMA3_TRIG_MODE_EVENT);
0 b# A: u$ I, X* \; XEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
! f3 u# |, @; K& ?4 ~- xEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 b' y4 c6 ?' |+ b3 I. ~6 r9 F: [; LMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% n, t0 W/ @) k, e
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
& t$ E( U8 p  p- }while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: \+ y( y4 o9 Z$ ~) E! h( V
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 I# p6 e4 t5 M* P) w8 G* K# I- ~& @% PMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 m- n+ G; R! [- s7 Q' ?}

; \3 _. O" \  B2 P+ u3 Y" t
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
1 ^* R* D7 `& s. @! L3 S8 q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-10 19:22 , Processed in 0.039721 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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