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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12245|回复: 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,
4 A. U& U) o  v- ~input mcasp_ahclkx,: \% R9 u* k( w2 S" H
input mcasp_aclkx,' j: D( D( K5 K
input axr0,* V4 q% J4 g- C  D! b
4 P5 ~/ O' T4 _0 f0 i
output mcasp_afsr,
' `% U. _  J9 U2 Y$ k2 m0 v! O6 toutput mcasp_ahclkr,' E8 @+ B1 m5 ^2 n- v
output mcasp_aclkr,5 y0 p; Y9 }" [, _( a& v& m- Z, w. O
output axr1,
1 H8 ~3 \- E2 O  O. w
assign mcasp_afsr = mcasp_afsx;
; K6 q9 g# v9 E4 `2 c' ~assign mcasp_aclkr = mcasp_aclkx;
9 l9 w/ J' f. w7 E8 _, g# Nassign mcasp_ahclkr = mcasp_ahclkx;
/ v* |8 P. C9 v/ b1 ^6 x/ massign axr1 = axr0;

& h( d! T' a( S- D5 f  t* n( b9 O$ h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
. P, k" a$ o& C
static void McASPI2SConfigure(void)
% q/ {: d* i" _2 u* t7 j% o; x{
) q6 ]3 I5 ]# K- W1 c% X/ M" b# |McASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 }1 q9 p$ W7 v4 z5 T( MMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  s+ a# y+ ^7 U* A/ h' s
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' ~" x  I" A" W) o' i$ p
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
0 b: y/ |9 D/ C/ k- b% nMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& y6 I( q8 B3 c! l& F6 u* U
MCASP_RX_MODE_DMA);0 I2 F. @  j( b( }' `
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 a3 Y: E5 S8 A, X1 @
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- ?1 Z  d! z0 M% K
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" k  p: W% @) P# s, |MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 B# S# R* o7 X' b& |
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, + {0 ~% p/ }6 K$ s
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" z2 _  l; s6 w# rMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" Q4 ^( X' x0 P0 x, D, SMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' y# z( E) K! c& h! ]
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! u1 q3 Q: r. c5 S4 _, _0x00, 0xFF);
/* configure the clock for transmitter */
. }8 ^1 ]2 E8 f! }# w# TMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 a6 |& ^5 P6 q9 d% f
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - `, J. {+ w, a; Z- |
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,5 c9 r, n% ]7 H
0x00, 0xFF);8 O! D3 j* {9 z/ M

$ J& u( {9 e; k6 o2 Z/* Enable synchronization of RX and TX sections */
0 f3 \4 }% y. Q! _3 k$ z) f# d6 }+ pMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */7 E5 U7 d+ \1 o* P7 J$ }
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 c5 I; R: o0 {! G/ Q: W" P5 i' B
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
; B+ j% w  f% Y4 T) {** Set the serializers, Currently only one serializer is set as- W* a, i/ ?" l0 d& Z( c* T- p
** transmitter and one serializer as receiver.. h: K9 I6 L+ \# s- ~( l3 f. C/ ]( M
*/% u9 u0 U0 e# O
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);" X) E6 @0 D/ S$ |$ n* F' P
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* a" f! ^. m: a+ `" x) B** Configure the McASP pins
& t: p0 d9 l0 r5 P** Input - Frame Sync, Clock and Serializer Rx5 U# }% a* `7 e; V- [$ x6 {
** Output - Serializer Tx is connected to the input of the codec , {% t, j+ d5 W- E3 S( J" F% r2 _
*/: c: K  D! k- z' S' m$ b% R
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 I0 N# y) z/ a! |1 U, l
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 i+ l; X* R" y, H" y& e* m  F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ }, D. i# f# F0 w9 U+ n| MCASP_PIN_ACLKX
8 X+ ~" x+ @% F" u% J% I| MCASP_PIN_AHCLKX0 Y0 e4 ~! b' r
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' o0 T" B6 B) G% U2 vMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR   v) J2 o! M# ?& N
| MCASP_TX_CLKFAIL
6 m" W/ ~5 n0 b2 ^| MCASP_TX_SYNCERROR
2 _1 b6 Y5 g( p0 e1 Q% [  b| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" h6 H8 o1 ^1 E/ X# x| MCASP_RX_CLKFAIL
! ?7 L7 m0 K- Q8 r" g; O| MCASP_RX_SYNCERROR 7 o* f6 H4 B2 k- x5 q* H
| MCASP_RX_OVERRUN);& P6 k% ]: s) N. e
}
static void I2SDataTxRxActivate(void)! r) i) c, J# ]- L# l- w
{5 B" l# l( q. W
/* Start the clocks */
, f" z4 Y# Q; ^McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, N' w8 I: u, U6 `, \McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 T& ?0 D7 w% e
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) s3 h# P3 d" x# j- MEDMA3_TRIG_MODE_EVENT);
" p2 T% a6 O! M/ b. h, z, ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
" p' m0 S+ o+ w2 d8 Y7 W( }  SEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) x' j' R$ J) @! O3 w- PMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);8 j9 u) T' i* x
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 n. H. W, D( g; Gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 }( S$ R) X- w9 A  bMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. @' F# m3 Q* O0 mMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
6 N/ B- r: c8 d}
; S# H& s5 }, U2 Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 _1 w. ^: F4 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-2 17:55 , Processed in 0.041145 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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