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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10900|回复: 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,
  A. h: }/ L+ [- Yinput mcasp_ahclkx,2 `; ?6 p" A7 T" d* Q- \
input mcasp_aclkx,) z* d( I/ {4 C' ~! B; [' V
input axr0,( x5 L( s7 t8 T* M% H; i: z6 ]- u

  t- Z6 |: q0 C( i% aoutput mcasp_afsr,
! E8 I- G& M( E8 e2 I2 Voutput mcasp_ahclkr,
+ n+ d- |6 k0 B! e0 X  W* poutput mcasp_aclkr,! B, f+ ?7 ?2 ~* T8 A( ~' ]9 C: E
output axr1,3 k5 ^! Z. }7 {0 {
assign mcasp_afsr = mcasp_afsx;
7 _' R& T1 L/ y; w0 _assign mcasp_aclkr = mcasp_aclkx;
/ u8 `3 k* v) M4 x% \assign mcasp_ahclkr = mcasp_ahclkx;
0 B& V" ]. t& t! q0 N- P7 Oassign axr1 = axr0;

$ [7 j4 H! ^$ y8 [& D. t0 c2 z
: Z* U6 Z* ~% x& r6 f+ V
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 n0 _; {0 V: D4 x# F4 |: ?
static void McASPI2SConfigure(void)
" P+ ^+ E8 i, X4 B4 J/ A{
0 X9 i5 V; ]9 i# Z" xMcASPRxReset(SOC_MCASP_0_CTRL_REGS);# Z! H* @3 I4 u' }2 U
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */6 |1 X  P' W: q. a
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);" T& Z" t) S% k6 O
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! \" m+ r. f1 o% N: NMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# k3 [+ ~4 r% W0 sMCASP_RX_MODE_DMA);  O: ^: N2 P8 O. h$ J! e
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- m! [, A7 d2 r7 ~& \4 OMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 y2 h' W2 i5 b9 ?& X, ~McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ! M& B  |5 `8 [/ `
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  E' H; l- o, B- O% p# ]
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 6 J/ Y( E5 R/ F! t+ [+ ^
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
- \, y* c* I+ M- B$ sMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);# H7 g' `6 D' q) M: s
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' U2 I/ `5 o  t3 V& P9 x; L
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& \0 v5 F: R1 ]
0x00, 0xFF);
/* configure the clock for transmitter */
  ^0 I, d& m. k, M+ [4 E1 b* VMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
  h7 N2 n6 b! {, {McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ' r; \; M/ N' n0 U% u
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ F3 b: }1 v) E0x00, 0xFF);1 P5 K2 w: q* j% W' y  F
( K. l  \' {0 w+ X4 R7 x/ a. @) r
/* Enable synchronization of RX and TX sections */
4 f. P3 V( ?1 a* `6 bMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- o" N3 I# M# P1 G% D9 K+ SMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; f! Y. V' ~" h) q, Q: @McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 L6 L# r( [5 }% L
** Set the serializers, Currently only one serializer is set as
( P! J9 j+ b! J# Q' e0 s' w** transmitter and one serializer as receiver.( Q5 Q) m' z" A7 \' d6 Z  o
*/
1 e# Q5 W9 _6 \8 u  SMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# V( f' L" m- a0 j$ v1 @1 o* w
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& H, M* s( h) B# n0 g, W
** Configure the McASP pins
& C2 i- `: E  {: c** Input - Frame Sync, Clock and Serializer Rx
7 ?' C4 v( }$ d** Output - Serializer Tx is connected to the input of the codec ( h+ z/ [, U2 T9 F2 e6 D0 L7 Y
*/
! h# @- y( H6 N$ w( l2 jMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ A( V. v/ _0 V; ~  h
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));% J1 X- B& Q/ v1 J3 ?6 ?
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! Q6 J7 O  E0 ^! M9 W" c8 q| MCASP_PIN_ACLKX) r. ~* {" a9 ?  F% m8 l
| MCASP_PIN_AHCLKX
7 w  y7 Z1 Y1 V! t| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% t3 f5 t8 B: Z# cMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
% k) K! a3 C# I% l| MCASP_TX_CLKFAIL 1 ?" s0 u7 t' I+ _" V. @. {
| MCASP_TX_SYNCERROR$ ?# D# ^% d( {' {0 g* B9 ]& U/ Q
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( ~4 }- ^. [3 `8 O
| MCASP_RX_CLKFAIL5 V( y4 u) u$ x( C5 F5 `; k$ O
| MCASP_RX_SYNCERROR " c; b+ m/ G! l+ Q" h  m
| MCASP_RX_OVERRUN);7 ~! }3 x, P5 }# z7 P
}
static void I2SDataTxRxActivate(void)* @; a' K1 _+ \; d) y3 ^4 N
{
; Q2 a- q5 b! ~/* Start the clocks */* v6 {4 x$ l9 S$ Y7 k1 B$ d" W0 ^
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);5 E4 c" g; N2 M) c! l9 c
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 D1 q9 g- k7 Y  W9 q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  ~  U, k' e& m0 M. J5 xEDMA3_TRIG_MODE_EVENT);
  |6 s$ w' y, Q( r9 I+ V+ TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " H$ W; [5 }3 B% K! |" U' |/ ^; F
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
$ C  g9 B% n8 b" p$ A' u; e7 FMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 W! V" g% F: o2 U' v
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) ^% {3 Z9 c6 @' B5 e* L# ?7 z5 R
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */. g# n7 I, a) }" u) l$ P: D7 g
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. _5 Q/ D6 j' c4 B, }* MMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& ]" o& r1 f( Z  Y6 |$ {9 W7 Q}
, y7 T# ?  ~* Q3 C6 @, w
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 C% u; x+ v% T0 v7 I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-18 15:48 , Processed in 0.038726 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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