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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,) t# @0 P9 }5 m
input mcasp_ahclkx,
6 i5 g, o- Y% z+ `( Pinput mcasp_aclkx,
% i# o: {7 j2 H, b# Y6 Ninput axr0,- g9 ]: J# l) z

) n+ h. v9 z0 Y  Toutput mcasp_afsr,! W' O+ ^9 E% `# T7 L! i, W
output mcasp_ahclkr,7 r& i! O' T  ^" Z# A6 h
output mcasp_aclkr,& a- H6 L' U1 S0 O$ g8 j! x
output axr1,
9 G5 j6 e( M' ?) ]% e, H0 ]0 ^: L+ E
assign mcasp_afsr = mcasp_afsx;
" W( t4 L) Z9 w' a4 D1 aassign mcasp_aclkr = mcasp_aclkx;
9 p3 \4 w8 v. |' ?8 U  D. Dassign mcasp_ahclkr = mcasp_ahclkx;1 Z0 ?# x& G# U- ^' z+ Z8 p1 p. y
assign axr1 = axr0;
  m) `; I& w' z' y" k+ A3 A
9 Y- E, v; Z) F, G) F' y9 N
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ R* [% h# f; I$ K& F. I
static void McASPI2SConfigure(void)
& n! x4 J: [3 H{
' K6 l: \- N  |/ \5 kMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# `+ v7 }4 ]# a. \" gMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 ~0 h& {! Z& h
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 n' j5 ]6 C& t/ ?% T! ?2 z
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
& h& d0 o' B+ }( ZMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 Y( y% }8 l" l/ s, R/ ~
MCASP_RX_MODE_DMA);
9 k  l8 z- k. P5 W5 C& _2 _; ~McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ h# @2 @4 Y9 m9 d
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, W% Q6 p" d7 h) G/ p& L, }! LMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ `1 f) o( f% [1 L% ?$ XMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
+ ^$ i% e7 y: U9 _1 y  ?McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 6 U9 N% P7 J  k/ \# o! o# z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
& F+ m3 h7 Y" A" Z) J/ W- AMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 a4 t& N4 x. Z( ZMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); , ^/ Z  f; G' U7 n! `
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
# t4 M2 m% d: J. z0x00, 0xFF);
/* configure the clock for transmitter */: M; J) j) T/ [0 s1 c  G
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% O8 v5 a$ ~4 ~( @2 zMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& D3 C9 ]- q, B6 Z; w( Y  G3 W4 QMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* H5 X, j  n& u# P" D% a/ M0x00, 0xFF);- b$ `# [) |( T, v6 J; P

# I2 w+ `' Y, t: b/* Enable synchronization of RX and TX sections */ , r! n1 {8 l' s. f7 s0 v
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */2 J. g5 k5 m% k! c$ A
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; N( T# T1 p0 v3 k) P  `McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*+ G; R( y& @: v+ e
** Set the serializers, Currently only one serializer is set as# P, u1 {" r* K- W
** transmitter and one serializer as receiver.
. j, @& U) d6 H; G! `*/% k( ~; O# C" I. a0 \$ D3 Y
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' N: p) c# `2 |7 R2 W9 H) K
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
" l) I' D) c9 |3 O7 h. F** Configure the McASP pins
1 e& p2 {& b- F** Input - Frame Sync, Clock and Serializer Rx* \$ h4 K5 u( e- e' g1 x" I
** Output - Serializer Tx is connected to the input of the codec ) D! B9 j+ r$ Q- k# u
*/7 M. g5 }1 o, r% @/ b! Q, _
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ C( B8 L2 ^; ?) R9 u; o8 d8 Y2 _
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));( f# I; A; E8 s3 K
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& e" N$ I8 b6 J2 v0 R7 ~' d
| MCASP_PIN_ACLKX* S3 O' p+ X& f' l' C& b/ A* |
| MCASP_PIN_AHCLKX
8 u/ D2 u4 E! }6 W2 P! S1 D| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ q1 Z/ Y6 I6 g! q% ]
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
' _: K" R+ ?( u3 F: z0 t+ ~| MCASP_TX_CLKFAIL & q4 y% \- e( g* K* S
| MCASP_TX_SYNCERROR( G% @8 a+ P4 x/ O& J9 @
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR , k. @5 W6 ]7 R; p/ [
| MCASP_RX_CLKFAIL2 _$ b. h% Q9 O9 e& ~+ Y. v
| MCASP_RX_SYNCERROR 2 }6 ^) n: w! D1 ~
| MCASP_RX_OVERRUN);
; X8 J2 P7 b, V# m) p# S1 L9 \}
static void I2SDataTxRxActivate(void)
; c1 _# t4 l7 j5 B{
- e( b+ b% ?) Q5 g( t7 g' m( i/ n/* Start the clocks */
( y# @# R8 B$ G, ?+ n) vMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
* c; m- w% l+ o; I: ^9 ?( OMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */# N& [+ U) [9 y! w4 L6 }6 R4 A4 N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% l3 Q3 J6 W+ s" b7 lEDMA3_TRIG_MODE_EVENT);% `5 i, w6 R1 y1 Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# `% o6 Y4 D6 W" v" z9 QEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' _& N2 Y+ r$ P3 t8 Y0 p
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
# m" D9 Q- C8 ]# ]% {McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */+ {0 H. q2 ]1 B; d- X8 w
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 U( `: E# g5 }* o6 D' L+ ~8 H0 k, V' h
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);% N- Y1 k' e1 z* e- l2 }, O9 j
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 @1 d8 d: D( S9 h& F% j
}

, E& y5 u" ^, A% O
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 w7 f( h. |; a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 19:31 , Processed in 0.038072 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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