MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,+ @4 R% m  C  O9 V4 l* z
input mcasp_ahclkx,4 P/ E. J6 Y$ W
input mcasp_aclkx,$ }$ s3 w+ h2 {& w
input axr0,
5 b/ r$ @7 ]8 G6 f5 y1 Q
; s9 J3 m2 d  n! Y& ^5 O0 Koutput mcasp_afsr,' e$ v: H6 m5 c/ x
output mcasp_ahclkr,- T/ ^* P: n, L0 N
output mcasp_aclkr,1 u. n2 K6 {  L
output axr1,* U! @& U) V: k' Z) U
assign mcasp_afsr = mcasp_afsx;
9 b+ ]1 k8 |+ F( Iassign mcasp_aclkr = mcasp_aclkx;3 ^9 p! J8 D" ^, V
assign mcasp_ahclkr = mcasp_ahclkx;
6 V0 p! Z1 U9 V: v# Eassign axr1 = axr0;

% |5 Z# |7 [1 ~
" A( t' E( z2 j# H9 h/ }" k
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; x! X. ]" l! W$ O
static void McASPI2SConfigure(void)
5 u& H1 X! S: g; E6 B{$ J( Y$ p, o, k6 ?: @
McASPRxReset(SOC_MCASP_0_CTRL_REGS);, x# A* j* I, O! T& n8 z' r: d" W
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# x3 {$ e. Y( Z. y! WMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* D! I/ \" ?1 c
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ A# U5 W& @0 z* f$ l1 u0 w
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& F9 e9 k) M! Z# _* \! b2 f# p
MCASP_RX_MODE_DMA);" X0 q5 g4 u0 A: F
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* A, J9 B3 o& |- m# m
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */, P7 V/ I% v. ]- g/ y% x, ~
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 a' q' m2 P+ Q/ q
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
( B, a! t! c/ O# W3 JMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * d9 B! w2 k) T; l- F
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */1 [; t' L* _5 I6 B9 h
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 t" ~2 f8 f# \9 m* ?McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ! ?8 x! A) c0 v& q- R9 z: [2 ?
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,) ?0 h1 q3 P7 U0 ~* i
0x00, 0xFF);
/* configure the clock for transmitter */$ T) B5 g1 X( q: b, l' k
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
, ]* \0 v0 b% e4 D: T# g' h9 g3 ^" eMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  Y* b4 A' a! e% d* w+ _+ sMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, L! E8 a/ ?2 v  X3 b
0x00, 0xFF);
7 B" {# l6 G; T( j# e
% e7 F9 N: T+ W/ O, r7 _/* Enable synchronization of RX and TX sections */
) L1 Y: X% B# yMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */0 W2 _  {: R, N( {5 y3 H
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);( a6 \- X/ k$ Q2 H. H& N9 _* b
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*4 C3 L+ T5 P- Y+ N: y7 n. S0 U
** Set the serializers, Currently only one serializer is set as& K. J7 n/ Q- ^! K* [6 t+ x0 I4 `
** transmitter and one serializer as receiver.9 Z- Y/ c  _& b3 F; {: l
*/
) P/ v" m9 r1 r0 y4 p; _( CMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);0 {5 O; R/ I3 M7 K) M& Q  E$ o
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 C, G: @! O! t- W9 E! [** Configure the McASP pins 1 j. n' B! [' K& ]
** Input - Frame Sync, Clock and Serializer Rx
, A7 o# S: z# f7 }8 N1 ]** Output - Serializer Tx is connected to the input of the codec
: I/ d$ g" t6 L6 M5 W" h: O*/
! k# `9 T  @" O3 f1 XMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 p& U$ ^0 ?% y  g  Q5 L' ?* R3 AMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
2 o: ]' ?; A. g, o8 a3 U& i3 w( K8 vMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ ~' w& n; ?& Z. ^' @
| MCASP_PIN_ACLKX4 |$ p$ i) t; J9 u5 d. R. N  B
| MCASP_PIN_AHCLKX
- y& s/ r3 q1 Y| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ r) ?* {  o7 v- ?
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 5 }- [5 Y' f# s, I; _/ q. X& @
| MCASP_TX_CLKFAIL : d% U1 l; X5 z) s' a& ?2 j9 b
| MCASP_TX_SYNCERROR
8 d/ B5 O( r  r3 l4 U| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* Q6 d& R% B# r& ^# w| MCASP_RX_CLKFAIL
& \! V) Q8 J2 [* X| MCASP_RX_SYNCERROR
4 F" X4 v% _+ u2 `8 R( @| MCASP_RX_OVERRUN);: c* n  {$ A# v2 o9 _
}
static void I2SDataTxRxActivate(void)7 n' V3 X( o3 M) N
{7 ^( M+ r" Z  I0 U$ v
/* Start the clocks */
3 k4 U" D- J6 N; \/ cMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);. W% U/ y( j( f+ G
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. X6 e7 @- _" ]! B+ ?7 x; b) ~. s; MEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 Y- Q& l$ |+ |EDMA3_TRIG_MODE_EVENT);" R% t# C' ?0 N" [, j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 0 i4 h0 k7 D1 R" Q, ~+ F) T
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) ^5 M' H" y7 V+ A
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 X: L( E9 p" z# mMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */# t& J1 j8 T7 \& ~
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& t  `, [1 o% w* b8 `! _McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& v8 Z# U! _% WMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);. q7 P. y1 l7 @+ F
}
" j5 X9 F+ O% Z- ^- X3 q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
; A7 O& W6 @4 A: ^# y' b* k, \, h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-11 06:29 , Processed in 0.037266 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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