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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11692|回复: 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,
9 n0 Y9 G1 e. C$ S+ V2 F& N/ Dinput mcasp_ahclkx,* w; b0 g8 F( w. S+ v4 R! ?8 I: P
input mcasp_aclkx,7 l" L* `2 g( \! s$ o6 b+ l
input axr0,5 p( O/ A* t! j
* h: G4 E! D+ k9 f1 e7 c
output mcasp_afsr,  [9 k1 N% M( {7 @- m
output mcasp_ahclkr,
/ N" P/ N5 g' E  D" [6 ~output mcasp_aclkr,
+ k) i, F' l0 }9 Boutput axr1,
9 B. j8 N3 H7 U" k7 o
assign mcasp_afsr = mcasp_afsx;
6 I/ G  r% q3 nassign mcasp_aclkr = mcasp_aclkx;+ B! m4 _: E, j0 b$ [: l! U; G
assign mcasp_ahclkr = mcasp_ahclkx;
3 N  u9 u; I# ~% j! ^assign axr1 = axr0;

+ I% R) D- F' F6 h( i8 ]% F" a; _6 B3 u9 Z" s1 K! y2 z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 [% [7 q( p  n1 K+ J: b
static void McASPI2SConfigure(void)
( X, b7 e+ Y% j8 n& }9 l5 T{
; {. w# ~8 _' r, r( p2 |McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% f0 q; k0 G" }7 w9 l4 V  ?McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' }7 B: t0 x! k4 @) k' s
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);7 J4 d% X" O% x5 W7 W6 @  I( V
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. R1 j4 H  b. h9 ^- }9 ?4 n5 C" K( aMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 p$ c$ g1 Y! g/ w( f
MCASP_RX_MODE_DMA);
  F3 R/ K) j6 _& LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- K; p0 q$ y$ u; e8 W$ Z6 u; t. tMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
4 t  O* L2 ~1 Y  H8 g: }5 }9 CMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# d7 A. k1 B: C) iMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) m6 ]( n+ K: d) m# r8 |
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 1 S, Q) R$ T5 I
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ `2 m, N6 ?- t1 m7 t5 _
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* n- {4 C5 d1 `1 O: O
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
4 e; \- Y/ [: B! q0 f4 D* s. |2 XMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
2 N; e4 Q! v: x" b4 J8 Y/ L) y5 l0x00, 0xFF);
/* configure the clock for transmitter */
* ~" ]$ x% z7 l9 P) |7 gMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ n/ \( K# K8 R3 L6 v5 r! hMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) v2 n) d- P5 s9 [; dMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 J: E8 }1 {" M1 `3 u0x00, 0xFF);
3 G  |; z2 t0 ^" T% a  K* ^! _
  v& X& u6 {9 K6 v4 ^  L/* Enable synchronization of RX and TX sections */ $ @' w7 A* j2 a& z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* w7 Y) N) x. l* TMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. m' p$ [# l9 G# h* dMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*1 A# b: h2 R, ]* X8 w* |
** Set the serializers, Currently only one serializer is set as
' E4 y3 `  g0 E** transmitter and one serializer as receiver.
7 B" y) u, i" I3 Y; H*/+ X3 Y! y2 {7 }7 r
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) j( K9 u+ T4 e) A  C# ^
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 E% |' t* c/ ?6 ~6 v& n
** Configure the McASP pins 8 {9 L/ E" d9 Q# G/ [0 h- j  ~1 y
** Input - Frame Sync, Clock and Serializer Rx
  M2 R/ A* P1 K. f- B* ]** Output - Serializer Tx is connected to the input of the codec
7 n2 m/ m& j5 ]; C*/
# b- h+ g; |" ]McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);0 l, ~  W4 ?7 M" Y# @# @
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
% L, U9 l9 X& s" ~McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
$ a, T; g& x8 q1 L0 ~8 S| MCASP_PIN_ACLKX( `; i: h; g4 p3 @; T* z+ y8 v, r3 j
| MCASP_PIN_AHCLKX
) E* ^* ]7 c1 c) h5 t8 R9 [. g+ w| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
: _3 i" f. t0 Q. R, j, _$ q) K* b, \McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 4 u( T  ~) h. q9 w
| MCASP_TX_CLKFAIL / K& B3 o# G7 O1 m4 T* U
| MCASP_TX_SYNCERROR( `- \. {* P8 n- q* j
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # A. G" d+ B' B0 k: ~8 J$ ?
| MCASP_RX_CLKFAIL9 \' j* l& n) L! s' F' S! n
| MCASP_RX_SYNCERROR
2 W5 P' n- l+ |  t| MCASP_RX_OVERRUN);
7 L+ n9 W  [* ]- b' q/ ~}
static void I2SDataTxRxActivate(void)& k! ]& `% Z& O9 M# S
{
( h: N% a, A4 c, x$ \! ]; {/* Start the clocks */
" h  Q9 t. i4 KMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! n( R8 q+ R) r2 W
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
+ @# p0 g  t) @, f1 WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,+ Q8 l$ ^+ V* G" n1 {
EDMA3_TRIG_MODE_EVENT);/ j! S- E9 n0 _1 d8 r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 M' [( e, z1 z1 f9 C4 g$ X9 uEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
$ e6 ~: w# [- M" i, y% G2 _McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
: J9 e8 V% l1 M3 e- `" ^( ?McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
5 c  U" n7 F$ n2 twhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
9 F5 A5 W: j; k9 y: P) wMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) U+ T3 C( X# \8 cMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 n1 I" ]7 Z$ R$ [8 D
}
# @1 O- `  h' \2 s6 A! R# {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: j  x* o# ~* `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-11 21:20 , Processed in 0.038814 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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