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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1194

积分

金牌会员

Rank: 6Rank: 6

积分
1194
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
2 v1 }" c. Q9 r- o. Pinput mcasp_ahclkx,8 X3 v0 K3 ~! s: b  l* k0 u
input mcasp_aclkx,
* {7 Y- _( H" A5 n0 `/ Cinput axr0,
# q, o4 |( a4 W, _& o/ h; p5 I
' o- [) [; T* v' d  X9 Routput mcasp_afsr,
! I! D! {2 f3 C. o2 d% Routput mcasp_ahclkr,: S7 `5 J9 g. l) X& b
output mcasp_aclkr,
( b; @& b0 j! b# q1 u  ~8 ]0 Noutput axr1,- d* E& g& |* F  Y- [
assign mcasp_afsr = mcasp_afsx;
# A- ?5 H2 z8 {9 Yassign mcasp_aclkr = mcasp_aclkx;
  v. I9 w9 E- d4 {( @) ]7 }assign mcasp_ahclkr = mcasp_ahclkx;
3 Y) n, {7 \4 Q0 J1 g! Lassign axr1 = axr0;
; s0 B8 X+ M5 l) E3 M
  r& T0 P4 }7 B0 q0 X9 l7 \: G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( W: S& a  M# E' T% `
static void McASPI2SConfigure(void)( n) j: |. y, W! k; c6 c# v. n
{& P2 [6 B& \# a6 t5 D' o- f
McASPRxReset(SOC_MCASP_0_CTRL_REGS);! X& n) O! L6 ]- @$ O/ N
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
- i3 ~! Y9 e. ]- h5 Q0 Y" ^# GMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
( `6 U! V! Z( {! `6 cMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */& ~1 v7 T; s8 A7 h
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 t  X+ c. H$ {" S: F3 r9 ^' I
MCASP_RX_MODE_DMA);
+ x5 }- [6 _# _* U& \. Z* EMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  @. M4 L6 I3 V, `MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */6 G5 Y# o5 N* w- a" I
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
$ T; a. S. f6 S+ lMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
( v" N& ~, H- ?' h' B7 `0 TMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" k" V0 O; V& j8 ?0 B0 I) e, {9 CMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& s% o$ q9 k2 _4 U' M0 {- [
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 }  m" x) g2 H: J
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ x: _" G* H, w. dMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ M# J3 T. @( A. O3 o0x00, 0xFF);
/* configure the clock for transmitter */6 V3 |* n7 H* D1 ~: O' S. Y# j3 \
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 O" P6 l. b7 ?# I- a2 t9 y6 `' SMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 5 ]- ?7 p: S" g3 X
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 z6 a. G/ G! g9 f% r# k. F0x00, 0xFF);
, k  b; u& v' _6 x- P) ^+ u- w+ ~3 D0 O3 C3 ^2 W, G
/* Enable synchronization of RX and TX sections */
: a' N  A6 S3 C. ~McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */8 G" K4 Q) R# f$ L
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' ?. [" a; t3 T$ |McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 n6 q: i% N7 Z
** Set the serializers, Currently only one serializer is set as
6 o; i8 g2 r7 P9 U4 h2 u1 i** transmitter and one serializer as receiver.
7 R/ E* }" b, _: @3 F*/5 H; l, `7 @( t- {
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);! {9 l! O! Z: \7 ?
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& p+ e  z. W& l0 L5 w" N/ |** Configure the McASP pins # r  V4 l* f: ?7 S, S) |! l
** Input - Frame Sync, Clock and Serializer Rx
  P8 l- V& c% D& ~$ u" |** Output - Serializer Tx is connected to the input of the codec
4 A. A7 o) d' W" M*/# m# J5 O1 ~' M3 E8 K( J
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 ^# O- z2 Y* P/ a- `( o1 vMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. l! G) u2 b0 m3 {2 v3 p
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 D  T# i" O! H, }1 p9 d1 {| MCASP_PIN_ACLKX
/ ]+ F9 ^# _( {1 F% b, J9 C5 }| MCASP_PIN_AHCLKX7 o2 W7 E) H" f  s2 n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; U6 C3 `& P3 ?$ b( A% W( S
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 5 g' b9 ]/ _3 T4 t0 C
| MCASP_TX_CLKFAIL 4 k& U( v3 J1 V" e/ v
| MCASP_TX_SYNCERROR, o3 j: b4 v* i6 R5 H' |7 X+ P
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' g3 _  R6 ^( p( f( \, l
| MCASP_RX_CLKFAIL6 u  p; o/ Z* k3 ^
| MCASP_RX_SYNCERROR . C% K: E; ~' e) C
| MCASP_RX_OVERRUN);
, h2 A5 S. V' {# G' A# b0 a& C2 o+ @}
static void I2SDataTxRxActivate(void)
, B$ W+ K+ E: j$ G, o2 a% t4 o{3 ]) f( T- B. q1 k4 P. s6 W
/* Start the clocks */% D% L5 N+ H; @, X1 V* g
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
2 d% V( x# U/ q7 @/ e( DMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 q" Y! t5 C9 n. m- G6 e
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
$ N4 Z9 C' h3 z: F8 ]" v$ mEDMA3_TRIG_MODE_EVENT);, \* R+ [, H% `9 a3 N2 B/ \" x
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
6 I9 O) \% o* x$ H" REDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
$ `2 i+ i; ~& D; r* C6 LMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
( U3 y& g8 B+ \8 `9 tMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */2 x) _$ D8 j1 }: m1 j
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */& d* `( m* o5 J  \- q" _# E
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 t) u. x# U' [% [9 T; [
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
/ `8 H& B0 x) s# c7 q) p$ D4 i8 p}
+ G/ ?- r  M2 j  r. [
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- |. C9 Z8 p; [) i; K' {7 ?8 Y8 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-2 07:41 , Processed in 0.037662 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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