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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11995|回复: 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,2 c1 W# ?% R. S4 Q# A5 `
input mcasp_ahclkx,/ k( Y$ Z% w8 {" B4 K* |
input mcasp_aclkx,2 P0 j* i. T3 C3 V7 J; H+ Q
input axr0,8 c! ?4 m' X: H6 s' Q) }
3 D6 x  \" w) k/ I, }
output mcasp_afsr,1 @8 R; q% M3 V
output mcasp_ahclkr,
  D! j2 O/ N" {% x  q7 Eoutput mcasp_aclkr,
) ~3 e+ e) q' b' H6 l+ d) U( M; Toutput axr1,
/ u" E/ ~* r5 a
assign mcasp_afsr = mcasp_afsx;+ P4 O* h) }) E! n4 ]
assign mcasp_aclkr = mcasp_aclkx;
+ D; c" q: \5 r, K! R+ fassign mcasp_ahclkr = mcasp_ahclkx;9 Y' W1 J# o- q  k7 L( \
assign axr1 = axr0;

3 i1 M+ t* G; ?* G- I* x! p$ J
8 |5 C5 F" V# r* K4 {- x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ {7 i2 P6 C2 S- u$ u
static void McASPI2SConfigure(void)) K8 M: Q9 h' e2 Q6 b9 l
{
. \3 M# K/ N5 F. y: Q" }McASPRxReset(SOC_MCASP_0_CTRL_REGS);7 y5 [1 Y% B4 K) E8 v
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
2 u- A1 p' a4 D/ ^( g$ G  U& vMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. X0 A: O3 s7 v8 X3 o
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
5 A2 Y8 w! |0 NMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& m/ e5 L( i' C' K
MCASP_RX_MODE_DMA);+ Z+ q, @0 c2 \0 n# A
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ _) M+ @- H& B! D) Z+ {MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; \: f! Y4 l+ l. wMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
5 |/ K; v$ z3 q* v- P' C: }MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
* y; s: I2 t" A$ u2 XMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,   T" {: `1 {- B5 h! O7 D
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 M8 _, J: r0 ?' V+ j% r( sMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  M9 v/ ?& J, D2 `+ o/ m! DMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); / \  p3 h7 m0 K( j% b" D4 Q! m
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 ]  s+ r4 X* h% {- r- `' ~0x00, 0xFF);
/* configure the clock for transmitter */# j1 `- e& h3 S) e5 t$ j' U9 w
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);% k6 a: J" V# q6 o' M, x
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
- n7 t( ~7 d9 i7 i  }7 ^% IMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
5 Y; n/ c3 q$ L' C- G7 K" a0x00, 0xFF);( W/ |1 q' F1 _* ]6 D
8 S0 o# ~/ p. @& O
/* Enable synchronization of RX and TX sections */ 2 g4 {9 y. [. @: U  i+ c/ {
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( g" S1 [! C' X: v# I
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; `) C0 j. E: C& SMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( h" i% f& C( l, U2 X$ A- t
** Set the serializers, Currently only one serializer is set as& ?+ u0 g5 G: G5 S
** transmitter and one serializer as receiver.6 f: C/ Z7 O7 s' c# c. j* U. [7 f. z
*/* ?7 C  P, i( A& P8 k3 z1 A/ F8 r6 D% ?
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);" U" o) V5 m9 r% r
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 l7 D6 L, ~9 M1 K* I5 f3 o7 Z2 p+ ^% e
** Configure the McASP pins / s5 \, U5 I2 @+ c
** Input - Frame Sync, Clock and Serializer Rx
" ~: \- P4 A! W2 ~' S3 b7 F0 v) l3 E** Output - Serializer Tx is connected to the input of the codec
5 q4 O/ M4 p( e3 ?' I*/6 ?  J0 t7 x/ Z3 u' a) R/ k
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
; o7 r2 a1 `. R/ U. @" ~( F; ~McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ |1 A& ^0 ]# A, A- F. W: JMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 j$ T. I8 c7 a  S
| MCASP_PIN_ACLKX+ P1 R( y* [* l' k) a( @, @5 O
| MCASP_PIN_AHCLKX% c; Q" a: x2 g  L+ e0 E
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  h0 u: b" @7 B0 ^7 NMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 s+ ]% a2 c0 L+ e0 g6 W0 r; c| MCASP_TX_CLKFAIL
& g# ?0 @, [( E% J; G5 r1 Z| MCASP_TX_SYNCERROR
: {9 u3 \$ ]# N# W6 h- \| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR / }/ ?- O% }$ t+ n1 ], _5 V
| MCASP_RX_CLKFAIL
7 |* i0 i/ I" d- f9 E) W& N  ]6 @| MCASP_RX_SYNCERROR : c" ~7 G6 o- D1 b& w- M: S8 w
| MCASP_RX_OVERRUN);) P0 C& k8 s3 I
}
static void I2SDataTxRxActivate(void)- v, g' p+ a, v( J2 y1 _6 e
{
. g" M" v9 q5 u7 p4 P7 ]5 `/* Start the clocks */
+ P) f! s9 W3 WMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
4 E; s2 u1 f8 g$ W: x' x1 e- z. A; @McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 A$ a- I3 N2 J5 g  O; b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
! R2 Z3 F3 D5 U4 T6 l! JEDMA3_TRIG_MODE_EVENT);
, b% J4 W. x+ t3 K  H% B& p+ tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  d9 O+ X. R8 v/ H( D" [) zEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( u/ D% @2 {7 l% |
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- {3 c* ~3 J" m: w9 O5 S. B
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) F$ |, s) i$ nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
1 q2 ^6 f. P4 i) w9 x1 q: ]McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
, a7 v5 @; N% J; n. J1 `McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% e8 ]/ L7 Y1 c! {2 u}
+ s) ^3 j5 p# q* {# D4 c, ]
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 F3 P9 d) Y; r: s8 d+ t6 A) Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-23 11:59 , Processed in 0.047331 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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