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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,* W. C5 o5 K1 `0 v1 N  C$ o1 i4 w7 S; O! u
input mcasp_ahclkx,
8 T3 d; Q  d5 D4 pinput mcasp_aclkx," z4 q  i) m6 @( e& @. T: i. I
input axr0,9 A3 {4 g$ B, N! ?$ ^" d

2 S. l9 o! s- k" f1 C+ ooutput mcasp_afsr,& j( @9 @2 o6 o
output mcasp_ahclkr,
1 D6 E9 ?! k7 I1 \2 @output mcasp_aclkr,* S- l8 W1 f# F2 i
output axr1,+ u/ m8 P* I, O" B
assign mcasp_afsr = mcasp_afsx;3 v0 U2 z/ W& I
assign mcasp_aclkr = mcasp_aclkx;
% c3 }; G% G8 r' aassign mcasp_ahclkr = mcasp_ahclkx;
( T( d, Y& e. U' P# I, u& T* j8 \3 q) ]assign axr1 = axr0;

1 N. R8 g% w; J) l9 a! f1 _/ N- v3 P$ z* r1 u: ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

+ Z( D" V0 `1 r5 p
static void McASPI2SConfigure(void): T! }5 L3 e' L; I1 ~" d5 E# i8 \
{5 m) v8 v" Z0 I
McASPRxReset(SOC_MCASP_0_CTRL_REGS);1 X: q0 X6 A; Y' l5 @3 t4 w" e7 n
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */7 C( y: O8 }. d8 |' @1 u6 \1 ]
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ {# V* }2 W. Y6 q! x' |: a
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- e8 M$ x5 t- X- q& h5 a1 U5 W. u$ yMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 K! Z! z' Y0 Z3 W- y0 LMCASP_RX_MODE_DMA);% s# n7 h) D: l2 |  X
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& C' E) Z# E( [/ qMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
9 H6 J4 _* b  t8 D: z: Q8 BMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   b0 w- t: s2 s8 E( p! X6 R7 j! m
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 \: U1 j; `  t% wMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! y5 @! J, d2 n# j5 J6 {( \* n1 IMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 C) E; e* K( }) Y3 `4 BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 j' W2 Z7 {" J2 x) |  @
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   v: _% r- U9 v2 X& V) _) J
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,2 F3 ]) t* r) A7 ]8 }( T
0x00, 0xFF);
/* configure the clock for transmitter */
! {% d  ?0 L9 E" n; ~, WMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 q! q/ P% _9 @. n8 N' G. JMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 ^8 l- Q0 ?  Y) E8 j5 H" |
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,( m" [1 {  J: f2 _$ `
0x00, 0xFF);0 i- ?" {2 H- P0 v9 K+ g( `: i
% `, h6 A/ n# o, a
/* Enable synchronization of RX and TX sections */
! s& y. P+ n  y! Y- @McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
% u: |9 P! S4 d5 q: N" ~% YMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
# a; v$ n- t) T4 `8 V: Z) k! C! B, EMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 L  w6 u4 v( I3 [& D5 L
** Set the serializers, Currently only one serializer is set as" K6 B' X4 x- H
** transmitter and one serializer as receiver.
' S, ]5 y, X6 w  {+ a1 m' N- E*/% c+ H8 A3 v, }& \4 v+ Y
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: u, Z# L" }! ~9 C/ k3 \0 Q2 Z; Z! eMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' i/ F) ]) P+ [! P
** Configure the McASP pins 6 I& [! m2 W% `7 ^; e) Q: ?4 o1 C
** Input - Frame Sync, Clock and Serializer Rx0 h! H. c7 L- h
** Output - Serializer Tx is connected to the input of the codec
1 g  o2 \; e5 f1 k$ e*/
3 P! B7 e$ a# n# iMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 I! b+ D$ p7 O+ Q
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* k. m7 a3 {* u5 r- u  PMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX+ I/ y6 v* w1 p! S- y- \
| MCASP_PIN_ACLKX
; O( i' j' L2 y5 q& c2 `( m6 X| MCASP_PIN_AHCLKX
) m  R" \. C, ~! A- ^| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 R6 }: H" o1 A* q7 F
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ U8 _9 i$ [  _: D  _& U2 N| MCASP_TX_CLKFAIL
( t6 t0 n, T7 X! Z( L| MCASP_TX_SYNCERROR: l+ v( t/ z& a3 k
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
. Z8 w! Y- y8 R! [  l| MCASP_RX_CLKFAIL
4 B. p, F- j" N  k/ ~| MCASP_RX_SYNCERROR ! R$ j' {0 j5 ?& y
| MCASP_RX_OVERRUN);
" N( d* C6 l) x& `: J}
static void I2SDataTxRxActivate(void)8 d0 B% ?0 S8 j" [
{
* H1 _1 M. \3 d6 k7 U/* Start the clocks *// n. |6 f/ V, r* ]/ K8 @/ P
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, }; I6 k6 \3 o, L$ uMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 c; c- ?- q" V" Y, H  K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# ?2 u2 p. E* i# MEDMA3_TRIG_MODE_EVENT);; o# J( A# @  m' |: _7 F/ E1 u" `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, % Q# C' s, j9 \5 i
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% D$ Q& t( d6 o" y- ~4 MMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
$ y. k' ~5 o: v5 sMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 ~: E) z+ j" w5 Z3 i) J0 _while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 W- h6 a# c  i8 N( g; s
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 G: [! ~7 Q# S# l# ]" E9 t
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 p8 Y7 |, R; P5 z6 r- f
}

; ]: [2 F" Z/ F; @/ j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, G. v5 J2 w1 q6 z/ p( K  d7 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-30 09:25 , Processed in 0.039637 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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