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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
1 y0 c; V2 f0 ?5 Ginput mcasp_ahclkx,$ s, C& y: F# t8 x6 N
input mcasp_aclkx,
* I; v5 f  p8 e% U) d8 Tinput axr0,
) z  d4 m8 X& {7 ^2 }( X, \% q3 U, ]0 d0 a2 ^; |% t/ m
output mcasp_afsr,$ m2 T5 f& ~/ \. n& T  P% p
output mcasp_ahclkr,4 P4 p- v. i( i; w+ k
output mcasp_aclkr,7 a. K& l6 [% ^* {
output axr1,9 {+ i0 `( V% @, H. n
assign mcasp_afsr = mcasp_afsx;1 p3 d0 l# h2 P; Z& r# [8 q4 _( ~
assign mcasp_aclkr = mcasp_aclkx;- I9 k. ], Q9 ^9 l8 C
assign mcasp_ahclkr = mcasp_ahclkx;
3 A* K9 u3 E7 jassign axr1 = axr0;

9 i2 W# W( K% Z* o$ R6 Y# F2 d1 [' |6 a2 V
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. @: }& S3 H4 \9 l1 i8 T* x
static void McASPI2SConfigure(void)
. ?) ~. d/ I. d) Z  z, D{
+ T& |( x, w6 e. F) wMcASPRxReset(SOC_MCASP_0_CTRL_REGS);9 g; I# j: M' l- Y4 {* s; v
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' @: h4 n5 ]% x8 h9 eMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' O0 G6 S6 Z4 o; e, i: TMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
' {! t# d5 u6 R/ O. l5 }) ~) qMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' U) r6 d+ a+ u8 t, @MCASP_RX_MODE_DMA);
4 O" `2 F5 J4 F: Y* MMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- ]' J! v* k, W1 i
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
& j8 p4 A2 \' e% f6 D" l, X; A! XMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
% ~) B, p* O# A& r- W) aMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  e& N% l& D( N4 uMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# }! O( S- A3 ?% s7 BMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 g# C( b9 P# S" \( i+ X
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 `/ O* d: y0 H* |
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
) f. F* i1 _& ]/ tMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( g' M  a, l) `0x00, 0xFF);
/* configure the clock for transmitter */9 m) i# O# O# x* Z
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( K9 O% I# u8 ~& d7 WMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% _$ X0 h1 z9 @& C( N5 zMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,# _) Y# a2 R. _' d% u
0x00, 0xFF);2 }! s5 o8 ~! N! D7 ?
5 f% m0 s3 t7 s% ~
/* Enable synchronization of RX and TX sections */
; U: W7 G5 |# R( {6 |+ }McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 l% I4 ~# B- i# C& l; p) u1 f
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 ?" W1 i- r' m3 m5 K# z
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. [2 z: A# b5 _, g% A** Set the serializers, Currently only one serializer is set as6 T8 F, `0 v/ }6 Z' P
** transmitter and one serializer as receiver.' y6 \. T# ]8 t3 t. Q
*/- b* Z/ n7 a" K0 F
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 T1 I5 y/ |9 |- D; H: @& U4 d5 b
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*. s9 ~+ ~7 c' h8 {- H
** Configure the McASP pins 8 K8 F1 D# m; W1 h4 d
** Input - Frame Sync, Clock and Serializer Rx7 Z7 b! F: ^0 ~7 f" j4 S) T; u$ v
** Output - Serializer Tx is connected to the input of the codec 3 P0 o' N2 L# }; X9 ?  W" k7 F
*/- q5 u; ^: I/ _& U1 v- U, W$ X& c
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
( O5 F' o& v* x% P/ ^/ ?+ G) MMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
% k0 c! r, K" v0 h: MMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX- W% J# k/ l/ i5 r  }
| MCASP_PIN_ACLKX
2 R3 O  z9 M0 F# x| MCASP_PIN_AHCLKX+ R9 M0 E+ Q/ H8 E
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& b8 G5 [, `& P) ^3 i$ xMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR " [2 v7 v+ e! w. @
| MCASP_TX_CLKFAIL
' ?8 F3 y  p/ ?: @1 l% x5 w| MCASP_TX_SYNCERROR
* S- K, s& r3 c& `5 h, ~| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' V) q. Q0 L$ l
| MCASP_RX_CLKFAIL
5 ?% K* a) q( T# w8 [6 R| MCASP_RX_SYNCERROR 5 F. e+ u9 o) A1 q# Q
| MCASP_RX_OVERRUN);0 y) j. E7 @) ^# N( C
}
static void I2SDataTxRxActivate(void)
% B, V8 d8 u/ |$ c* |+ V{3 U0 A! ~4 V5 V7 \. ]; E) o8 v
/* Start the clocks */
& N; {' \5 S/ G2 B' J. r* VMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
4 }7 ~7 D. F3 }1 O: V) ^McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 w; G# x# _- ?8 s- q4 J6 ]
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
$ z( J* W+ B8 I- @$ P- lEDMA3_TRIG_MODE_EVENT);9 n9 T. W( O0 X4 f5 }- `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
! s; w+ w( d! N8 q4 ^- F, ZEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
6 M  D0 l: D0 R' i. jMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
) k4 z  }! w- ^) yMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */0 U8 I6 G8 M! w# B- ^& ~& J
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( i% A# r4 E4 _
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
2 L% ~9 Z: ?1 @; W6 O; R  @! gMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
3 z  C+ ]0 h% D1 a% u}

2 X& J1 U% h! f" ?/ F5 X; @5 B! h
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" c/ F$ `3 x9 Q, m0 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-23 06:32 , Processed in 0.038994 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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