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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11068|回复: 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,
! C, B* Q: x7 C- Ainput mcasp_ahclkx,
: k* j% x1 O4 A# v: d- F5 ?input mcasp_aclkx,! u" e; B8 s( R* K/ J
input axr0,, y. o, d% W4 {/ f) B/ _0 C
- M' b" {/ r6 K+ {) o' E
output mcasp_afsr,' @8 B- b  M/ U  a5 \% F# L
output mcasp_ahclkr,
' c7 I5 Z. z0 U& v7 |output mcasp_aclkr,5 X* E, T6 E; a7 i) X
output axr1,
# E. k! ?/ j) S
assign mcasp_afsr = mcasp_afsx;
! u; H, K( `( v1 ]) Y) qassign mcasp_aclkr = mcasp_aclkx;1 T$ g5 ~+ `3 J+ h% Q8 ?  C* k
assign mcasp_ahclkr = mcasp_ahclkx;; [' ^7 V' t3 f1 ~4 f# m6 R
assign axr1 = axr0;

* V& X: f; P2 F. f: C" k3 z6 c  K$ t  x$ _
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
& I+ c0 k1 Z" A9 R0 S$ ^
static void McASPI2SConfigure(void)
6 }5 p4 h0 z! S7 v; V{5 G) v) Y; s( F1 U1 m  L% D/ m
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% O7 y' _+ D4 f) q" H1 s4 j/ B1 Z7 iMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 Q- D& A1 x( @# P( q
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& i* M  R5 L$ ], k
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. I+ f& i/ q/ e& |5 r2 MMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" ~: t7 \4 V& b9 ]1 gMCASP_RX_MODE_DMA);
' @& f8 _8 b( r  n- _. n/ q# ^McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ }; b2 b- P( g1 b- b
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
4 s" N8 v2 Y% UMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 p1 y/ d% [! {4 E/ _) mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
7 Z/ U0 D  ?  ^1 `; `McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
5 j* B- f; h! r5 x& w; [MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
5 ?* ^* `- L& DMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);: \8 W* g" f, r" ~7 c
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % p9 R% B+ H3 k$ l7 J% z
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
5 Y* P; G$ w" x$ l3 ]0x00, 0xFF);
/* configure the clock for transmitter */
3 U+ q0 H6 n3 K* j* T; `% v6 P- CMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
8 {- G. @% W! I: A1 IMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
# d$ ]' y7 R0 @2 b  Y4 H. @) jMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 D# X- o- h; r# m- x0x00, 0xFF);9 U- a# `$ e1 r9 g2 o% Y
, O4 n, Q: ]: E4 p4 w- b  r
/* Enable synchronization of RX and TX sections */
2 U! h8 K8 L  L# {- PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
# H3 j( S* `. o+ Y( ^* NMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 B. o3 H7 r' y
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 w4 ]) J7 s6 }. _. g2 L. D
** Set the serializers, Currently only one serializer is set as
$ P7 Y$ b9 m# j+ l4 ]& j8 I3 N** transmitter and one serializer as receiver.
2 c' _* t! Y2 S" n*/. Q% M) H$ U4 N+ j
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 V# p* U0 N  d0 b1 p3 j) QMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ O+ D7 o/ k5 [+ {/ }% s; x
** Configure the McASP pins
8 P# N' ^$ \3 R( J' C/ v4 w. g0 D** Input - Frame Sync, Clock and Serializer Rx
8 s6 s- Q  K, W* D** Output - Serializer Tx is connected to the input of the codec
. @; k2 W( |2 O+ O  Q1 b# u6 g*/
. N7 c$ x4 T/ Q/ }! M/ G* T$ IMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ ^- t* j7 G4 n. s" F$ z! ^3 L
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* t6 _/ J) Y9 f7 t8 m# o' [McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
" M7 C0 m! y  X4 P" \, n| MCASP_PIN_ACLKX
  g* A: E. \9 ^$ V' G4 l, Y3 Z$ k) p| MCASP_PIN_AHCLKX" W/ B: C+ @+ O; B. Z7 ]
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
+ ~& a+ f. P/ _McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: U" b7 ^6 c, L8 H# _  @, k+ [8 j5 o| MCASP_TX_CLKFAIL ! ~+ {. I6 W8 u* u* R
| MCASP_TX_SYNCERROR
* V" i% {9 ?% |- b; C& e* V: @| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR , [# U/ T2 K0 G3 B( F6 V8 o" F
| MCASP_RX_CLKFAIL
( `  u+ R) T9 x| MCASP_RX_SYNCERROR ( S7 }) a' B& }# g% M  E% O, Q# R
| MCASP_RX_OVERRUN);
4 d& T: k: L: Y6 E" w}
static void I2SDataTxRxActivate(void)
- |+ A- W* ~7 D: u9 T0 V& V{
$ Y3 O2 @0 n/ J3 s! k) I/* Start the clocks */
1 v1 H8 ]/ F; O; f4 i3 J  W$ ~McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);6 `9 K! R/ R- y
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 M9 i8 q0 d! H& Q. m. G3 Q( ^EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
. a2 `' R0 U5 ^) bEDMA3_TRIG_MODE_EVENT);
( C1 O5 E2 V4 X2 {& k2 ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & H( Q/ F$ {" F+ I
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */3 F5 ^: R+ X! A) D6 Z8 B
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
# @& Y( H! l% y  _- F6 n! lMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& S+ ^, }* k1 C- J" n; S1 u
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 d% M! _1 C8 D! r
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);1 Q. F: F. {" r+ `, G1 ?- M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);6 H3 T2 s% U  r
}
% x3 N  \! t+ n
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

; F! Z! Z) I( y! k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-23 15:10 , Processed in 0.040346 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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