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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
. H& |& O& Z& u1 G  G8 jinput mcasp_ahclkx,
, e  l5 a0 a. T% ^; n/ s, F. X3 o$ linput mcasp_aclkx,
$ k3 l- ~) }% F# Q, X$ [( t1 U0 X" zinput axr0,% a* [' P; n2 S! E! _* T; t' L

: |/ s, o0 F6 o1 routput mcasp_afsr,
$ e" {8 C9 G6 F( uoutput mcasp_ahclkr,/ g$ G& c1 `" ^# w7 E
output mcasp_aclkr,
! y9 I+ g  H; G% Routput axr1,
% r* R  h; S+ U: w
assign mcasp_afsr = mcasp_afsx;
" K$ u* ~2 S9 q5 W3 c- vassign mcasp_aclkr = mcasp_aclkx;' i4 E5 d2 s! R3 ^6 ]7 b" z% G
assign mcasp_ahclkr = mcasp_ahclkx;4 f; A, ]; P+ Y! b! Z0 s$ d/ ^
assign axr1 = axr0;
; o: C7 Z* x  H

  D8 ~9 I9 A; W6 n5 E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

/ L# ^2 W- v/ `" f
static void McASPI2SConfigure(void)
0 E) M8 D" Z9 k- D% }6 x{4 k. M6 ^1 n5 h  D
McASPRxReset(SOC_MCASP_0_CTRL_REGS);5 L  b  C4 X3 z
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) O: r$ c! M- L4 J' j! l' u& r
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 l" n4 o+ E2 H
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- i* F/ T1 j0 C" {7 Z3 Y8 L7 A/ l
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. R0 p( X2 Y* C  p7 c" T: RMCASP_RX_MODE_DMA);
. ~6 [* q: K8 d/ l8 rMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  ~- Q% M$ }9 `5 I' C3 I
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
( s) o* Z3 g' e3 _- p; j# H% WMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ T$ Z, \( l6 I- _; P1 R# {MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  Y2 F8 z/ X) x: \McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& V: z; `$ g$ `- AMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( B* ?! Q2 [  L$ y; `8 e# H0 F
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 H5 V. m2 ?6 L  q8 q' oMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
' ?  [0 p4 Y7 v, v/ i& h8 }) L7 wMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,* f# E% A: f  e5 e  F- i5 R# u# E* _
0x00, 0xFF);
/* configure the clock for transmitter */2 {9 Z4 I" S6 ~0 B: h; L
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) {9 p4 w4 O& Y3 j
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : D- O& V& c- {- G) B' U
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
, K! \9 r0 B" ^0x00, 0xFF);; s+ n. k! O3 P8 S2 H
( i9 w" N2 V7 |+ ~2 P8 V
/* Enable synchronization of RX and TX sections */
" e$ o8 i/ |% e5 \. V, tMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. r1 g2 e- ^: t- X; [1 GMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 V, o/ i  q/ p( Q2 R4 JMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
9 a! H" X6 p/ V, _" R$ c' ?- [** Set the serializers, Currently only one serializer is set as
2 a  [3 r: M1 F+ [3 K6 L0 `: Y** transmitter and one serializer as receiver.4 M& x/ ^$ Q( v, o8 R0 C% y, w
*/8 g) U( ?" n# S1 E' q9 K
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);. l2 j* @1 I5 g# [. Z  S
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  ?, _* _2 _1 c. q* i$ i
** Configure the McASP pins # Z$ g0 |, b% F5 B# ]; Q! Q: i
** Input - Frame Sync, Clock and Serializer Rx) K2 C2 ~3 S* n0 `  {) F
** Output - Serializer Tx is connected to the input of the codec 5 v$ I8 y3 I3 [9 H8 i# ^
*/
6 Z3 q7 M3 D/ z1 }! c9 i9 H& bMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);( K" c* Q# s0 p
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));- D0 a1 H  A" U) F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) R; [2 x2 u8 {' U0 i
| MCASP_PIN_ACLKX
8 ^1 K' S' }  _" g! x# c: \& l, S* ]& G| MCASP_PIN_AHCLKX
! \" F8 j. M1 T) Y4 W| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
) D  Q# k% s" n6 U+ I- CMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; v, p5 M9 a4 ?& k! u- T| MCASP_TX_CLKFAIL 9 K9 ^+ y5 ]5 U& F
| MCASP_TX_SYNCERROR
  ]# N+ H% S/ }+ x4 P| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 A& g% N: L* a1 F8 _1 l* k| MCASP_RX_CLKFAIL
0 r. `$ ]* i$ }+ P+ ~6 k" N, p| MCASP_RX_SYNCERROR , N  e+ o7 F) q- I
| MCASP_RX_OVERRUN);
9 g$ }  P: c$ [+ R! ]# [}
static void I2SDataTxRxActivate(void)
& f$ n, Q) T& K5 J& }- w+ v{; L2 u" Q: {5 Q3 c( E* x
/* Start the clocks */
# X8 @% L! z* d9 }, s" }4 WMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 y; w( {: b1 ZMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 p8 f% U# [9 J6 z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,& _2 K  |. d: S9 s% o. z+ ]
EDMA3_TRIG_MODE_EVENT);
5 \9 @& X( s0 L! [: h/ G1 e% h9 h: |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 1 {; e8 D+ g' ^+ X" V& A- ^
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' n5 m( X, l" \
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 Y% P0 \" C: }3 I; MMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */1 F- G& I$ |/ n/ b9 [$ q( [2 g9 c
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
9 c& u6 C2 s3 m9 x" hMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
2 _: t+ _! q5 I& c$ CMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: g: e+ M& j0 e& A6 u( R/ R}
/ s0 Q2 n8 ~! T4 P) c& T! H4 z+ w: G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* V% g& z0 Z; u; _# k0 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-24 05:19 , Processed in 0.038977 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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