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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10179|回复: 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,  }( ~5 d# R2 l) Z$ v9 ^
input mcasp_ahclkx,/ y1 `. o" h( A+ L9 |8 d, {1 [
input mcasp_aclkx,( ^. {9 b* z9 y/ J  n  ~+ O
input axr0,4 t# H; ^' j( h+ F' ~" b/ r; {
  e7 X% F9 S% Q: q* J
output mcasp_afsr,
, c7 r+ x. Y2 ~2 d. Q4 D. i! X5 Toutput mcasp_ahclkr,
' Z8 Z5 h4 ?/ _; v' Eoutput mcasp_aclkr,
. M! b0 C3 r6 G6 e( g! O0 Routput axr1,
1 k$ e% Y" B# ?6 m# p  f( m$ I
assign mcasp_afsr = mcasp_afsx;; f* b9 W* t8 S
assign mcasp_aclkr = mcasp_aclkx;* r9 o5 P7 x7 Z& n
assign mcasp_ahclkr = mcasp_ahclkx;! k4 J) s& a+ U  M  B7 h: ^
assign axr1 = axr0;
1 |+ g. F* T( [7 X6 k# w
" o+ T' S' |% A# H" {
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
$ a, I3 ?8 |6 I$ e1 l+ \/ O
static void McASPI2SConfigure(void)
# B4 z3 [( o. N{
* e! h- r0 ]8 x9 s6 _  G4 o/ qMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 g. N) @6 }6 h  X4 ^
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
7 q( t2 f8 h! v* EMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);! ?* s$ \+ C7 s1 y  v
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* ^6 ]% V! y5 a2 q% W* b
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) B) Y$ w, K' B/ I
MCASP_RX_MODE_DMA);
9 E; ^  I+ O' j4 qMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 q/ t1 g) F: x, W0 u" h! d# V
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */2 u3 B# V: N; E9 y5 V9 O
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 C7 z2 Y" B9 A/ {, I$ O0 e% E  DMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);% ^: r- F! N" `& H* f
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
  V# h' h$ z9 L7 N6 V! dMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */! I: J/ ]  f+ ]4 K) g4 y" u- {4 i
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ U: o. Z3 R- j  E( j' ^McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. _% \% V1 f6 {; p2 D7 o- XMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,1 `3 [* {$ o# f! G7 F3 g/ P
0x00, 0xFF);
/* configure the clock for transmitter */5 f' o7 {1 ~6 Z6 A
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);3 c% r  H; [+ e! ?$ \7 [
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
/ O) P" d$ r* |6 o( z/ O* z( t4 }  UMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* F9 C2 Y* V* G( i, I8 v0x00, 0xFF);3 x* {8 `0 N5 P  m0 ^: {
: R' X! [9 M+ K1 h2 }
/* Enable synchronization of RX and TX sections */ * `. C0 c; R- z2 Q' c% x/ R% M
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& Y+ q" O. |% t; ~McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
8 _4 A: K7 H0 B8 w# v" {McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 @* d6 `: b! ]- j
** Set the serializers, Currently only one serializer is set as6 `/ p$ b, u+ R# q5 Q7 F
** transmitter and one serializer as receiver.5 }/ G' F! \4 g( ~, Z& G
*/9 c) C* V4 \  t8 ?: o
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);" k7 Z6 l0 E# {9 L
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*# ]: F, A  B2 m2 Z
** Configure the McASP pins ! U8 d* |1 b/ d9 p
** Input - Frame Sync, Clock and Serializer Rx
- B2 e4 i! ?* j** Output - Serializer Tx is connected to the input of the codec # ~3 @# [% {, W: g. W
*/
* Y, {4 c- ]9 ^5 W! ]( sMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 a9 j* S9 X; a0 f. u; Z( A+ @! X/ p
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
1 y! t3 X' t) P& ?* Z* I$ b- I2 FMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
$ @3 c, [2 {! v6 o6 S" b| MCASP_PIN_ACLKX8 d+ g, Q: _7 \8 ^' Q6 p/ N
| MCASP_PIN_AHCLKX% K; w7 |1 Y- D8 e
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ V' _. K$ o! U; O# s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR   m9 t! S, B7 r" S; z) [% f. D  t
| MCASP_TX_CLKFAIL
, S5 b! Y- ]/ y; x+ T| MCASP_TX_SYNCERROR$ @  v. |& P$ @8 e; T; q
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 o/ ^  Y% j3 t1 H! Q| MCASP_RX_CLKFAIL
: V$ x* S7 g( B3 g" a3 w| MCASP_RX_SYNCERROR
: T# a5 B* Q. I| MCASP_RX_OVERRUN);
. V2 a% B+ }7 R0 J}
static void I2SDataTxRxActivate(void)
9 M8 p; y' {* L; ~3 Q6 h1 I{
: m6 j( Q+ |% H+ F8 j1 f. f9 v/* Start the clocks */- T3 B# E6 B3 d* Z5 |+ r& k- S& [5 I
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" ]! t* B+ d/ R( E- ?! K, q
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
* |1 r* S2 Y  c0 Q& r/ ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
/ ~7 l3 b7 C5 T5 a7 w/ j1 M7 a+ _EDMA3_TRIG_MODE_EVENT);( {0 t7 w5 d* D$ ]' U
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : e% ^9 ]; k( N6 F/ l4 Y# @
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
4 h! {" d( W, k1 uMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 v( H8 f1 Z1 S
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( d' ]$ ]$ L5 j5 {( \$ H2 F1 |
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */- Z: n; D  z4 W# K) c
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 S9 E$ e% p! D6 d; ^
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
2 C: e% S) Z) I: P& ~}

+ M9 c$ n; \5 G0 p  e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
* w$ J) x+ D3 ]1 j9 T3 L6 a  q; a: u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 22:08 , Processed in 0.039596 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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