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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13340|回复: 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,
( p  A7 p' u1 J! n' Binput mcasp_ahclkx,
. \6 z- `$ q+ [) }/ T( J( Tinput mcasp_aclkx,: k! j$ I) n5 D2 i. v! x; m
input axr0,; K/ S$ z) h7 Z! L: z
% |3 E& B) `0 D! r, d
output mcasp_afsr,
. U* |, N. Y6 J2 v# Aoutput mcasp_ahclkr,
/ v8 q4 x: {  R# `0 o* f5 Moutput mcasp_aclkr,
1 b6 N2 j9 L! E9 I2 woutput axr1,
; C" \$ o0 y& m$ d( L' [
assign mcasp_afsr = mcasp_afsx;
& c6 x, Y! i, r' j7 y, Rassign mcasp_aclkr = mcasp_aclkx;1 L) Y0 K: {7 f
assign mcasp_ahclkr = mcasp_ahclkx;
  g2 C' _  ~' |9 z% Vassign axr1 = axr0;
6 O% ]9 |# x  ]6 H

; e2 d! I8 U6 l2 O
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
- L) N9 {/ o# A" q/ S3 a2 C" s
static void McASPI2SConfigure(void)
- L0 g% C1 i# q+ N{+ u# ?0 i- g- D
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 |- |7 C: N2 @* s/ yMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
" T1 k* x( ~- }. m4 a% EMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! F" E4 _  L  |/ R% n. \McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
5 M0 I; [+ y/ ~6 a7 o& tMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% z( I: v, u3 O6 YMCASP_RX_MODE_DMA);4 G. h& y# ^8 ]! ]
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 A7 H3 b" b1 H* T0 J) eMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
+ S: w3 [* V1 m( @McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " ?" r0 C' u+ O# q4 A
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ @1 Z: z0 e+ Q- M3 n
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; z1 w0 b& v( y$ n
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver *// C4 d7 k: _) n( P! U5 G
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
, |# ]$ q. q6 X! WMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
9 Y& S8 F. v4 YMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 H9 ?- S$ r0 A# R2 Q. {7 H0x00, 0xFF);
/* configure the clock for transmitter */- Y0 q& R. p& D/ N% J: ~% M
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% R& s, v3 E+ U& _, B1 jMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / {. l9 o1 d) @( [$ ?: Y3 q) ^: U
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
6 }+ V, r6 _+ T$ j2 R3 r0x00, 0xFF);
* \+ `, f2 O: |$ ^5 |2 U/ T# m. c9 a. s( I( ~( q
/* Enable synchronization of RX and TX sections */ 8 n5 u! `1 |3 g. w- f
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ A2 c3 R0 N! _; G
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
# r5 Z2 E" a# o5 O3 GMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) ^  F1 H$ H0 r" A8 r
** Set the serializers, Currently only one serializer is set as) O# [' c- ^* M9 r
** transmitter and one serializer as receiver.
) Q% ]6 B2 ~& j5 Y4 Q2 L*/
; f1 o0 @- M; x* K0 kMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 p1 x5 T0 X4 n6 @5 i: H) |$ R
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 ~& W9 _+ k* H; k6 Y/ \
** Configure the McASP pins
) q: s" k! e0 ^' m& s* q** Input - Frame Sync, Clock and Serializer Rx- O3 N0 s1 m0 ^, G
** Output - Serializer Tx is connected to the input of the codec 1 N8 h1 u; F" U1 E( {2 T& h8 _* {
*/
+ c3 f% x& S+ @$ o( |- g( j. GMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) G  a8 {, ^( \8 P/ v! F0 X
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 c! ^. {% Q  r
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! M8 E' E3 A3 t# b4 ~" E1 P| MCASP_PIN_ACLKX
  T& J: @' ?  w2 V! l1 r" A| MCASP_PIN_AHCLKX
  U! i) J/ g+ v: n8 A| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. M* `4 o8 A; ]( l" i
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
- V9 b$ w" \4 p5 u! f| MCASP_TX_CLKFAIL
* d3 A" ~5 ^- d5 S8 ~* \  q4 G. `| MCASP_TX_SYNCERROR9 f9 G. n9 g* f
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
! M2 K3 ~! C( @0 ?- t5 V' d8 F' f% W| MCASP_RX_CLKFAIL
0 j& W- I6 H6 O2 f$ T' j, a0 C| MCASP_RX_SYNCERROR
! F1 `8 _. Y0 c| MCASP_RX_OVERRUN);, R" B9 U) ^3 _! m
}
static void I2SDataTxRxActivate(void)
2 p! L* g6 O: \4 v+ `1 u{! @3 p, i& ?$ E' q4 J/ j+ T2 w% l
/* Start the clocks */
( P  M5 Z! z. @" q: QMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);) V  H4 A! s% t" o  f& `) V
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */  P2 I0 Q* M: c$ s& x. m) k9 N5 f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,/ q0 [$ n! ]( u  b' O4 q% `
EDMA3_TRIG_MODE_EVENT);
# I' X( B8 i' I' }* BEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 @7 G/ R4 ?9 h8 `EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */# K4 \$ N. V  o0 u8 Y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);; H6 m( L& B; z0 r
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ D( g! m' I( I. e" U( Zwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 ], N" F8 s* J$ O+ r
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);1 J9 H+ d. u; ^6 I! t
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 P. Q  o4 ~" a! x, G: K
}

; l' s: w: F* `' K: h. O4 u/ D. E7 `
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

3 R8 o5 M5 ~% Y' z9 V% S& k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-3 21:58 , Processed in 0.042137 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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