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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10101|回复: 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,+ r' H; F3 A2 ?& E6 i
input mcasp_ahclkx,
1 S2 J. T# a8 [5 J1 H$ ninput mcasp_aclkx,- U* I4 O2 I5 e4 c3 A/ z) H
input axr0,
4 ]' C( ?2 V/ p* K, O3 C# W/ ]1 @9 d
output mcasp_afsr,, o6 X2 b7 [8 z
output mcasp_ahclkr,% x9 k/ u0 b, [. e
output mcasp_aclkr,! X6 I1 |% Y1 m
output axr1,3 Y0 x$ G; R; ~- v
assign mcasp_afsr = mcasp_afsx;
6 A) Z  x; |- q4 w9 _/ q% Rassign mcasp_aclkr = mcasp_aclkx;
2 a- ]9 h( J' Y3 v! y- W( Gassign mcasp_ahclkr = mcasp_ahclkx;
/ t4 u4 i( m( I# |1 bassign axr1 = axr0;
+ l- C- N2 s' n8 A. k) n7 u( G! Z( p
/ s3 Y) W7 H. b0 m4 T6 N0 Q4 m% j* w
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( w8 G  B0 U6 K
static void McASPI2SConfigure(void)
' f) L  {0 X9 `0 |{
6 O. v3 w5 p/ s/ }' TMcASPRxReset(SOC_MCASP_0_CTRL_REGS);' E3 g3 ^& j/ w" m( p
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
5 J( X, ]  A! e8 PMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  L; A9 Q2 q! f( s' XMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
2 a. q& @/ N" F- NMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ E" r' B( Q% c8 n: n2 j  a7 b
MCASP_RX_MODE_DMA);: N: `. C& |5 ~- \# R9 a- x& t
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' x1 O% s& H" {% c# KMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
9 D3 p9 z) l: C4 E+ h. JMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, - [. ]' c+ f6 B0 v- p5 N* g
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
1 j- h( Y/ S* E2 j. w; Y+ CMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 j# y% B  Z2 p6 Q$ Y2 x5 [MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ [8 a) |: g! d$ ~6 P
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 h* p& j; r* ]5 W
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
8 a- j% W6 ]. V* P9 `$ p4 tMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% \. Q6 \/ }* ~, t! {( a0x00, 0xFF);
/* configure the clock for transmitter */
/ ]6 `9 z2 Y3 l8 M8 |McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);( K, u' j: |. }. _* {
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
; g1 r  q3 Z, Y5 j6 \" \McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 [8 I; y9 w, H9 {5 e
0x00, 0xFF);
. {& a3 N5 O$ Z2 s, j$ J) ?: g$ W
8 _+ Y: |% l  J' P9 u& H- }4 X/* Enable synchronization of RX and TX sections */
/ Q# s( G' z" s- \5 Y, sMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
2 ?4 F. {& c" A+ l4 p4 AMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 I) x. t/ k: EMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 J+ C6 a% b2 z/ t2 f; `5 c** Set the serializers, Currently only one serializer is set as% A* O4 K- y! ]! D" y/ W
** transmitter and one serializer as receiver.* S4 T2 K- s$ n: [0 J2 n8 F
*/
! l! a  ^! S  iMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' }- y9 C% U; @McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
7 I; R6 b3 Q% J6 C' Q: {** Configure the McASP pins
" j- ?4 v. }' E* s** Input - Frame Sync, Clock and Serializer Rx3 e% m1 j+ w( @1 ]' W" K" s
** Output - Serializer Tx is connected to the input of the codec
4 p/ C, n; C& J( O*/
* y( |, [5 [( ~- l: I2 a6 f. r( j: W6 GMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 M  v: D6 C' ~4 G* U' i0 I! gMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) W0 z- {6 I1 ~' }  n" NMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 V& G4 Q! U/ H3 G/ k| MCASP_PIN_ACLKX- k% t3 S' \# [* H* a
| MCASP_PIN_AHCLKX
6 ~. N2 A8 f; S1 H  q# Q6 k| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  O" g5 G9 p- E! ]2 U) V" HMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 2 S+ B' K' ~1 |
| MCASP_TX_CLKFAIL 5 g0 h  ^9 |3 ]; l; P" q( q
| MCASP_TX_SYNCERROR
2 h& A8 |" P% D. R| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR * w$ J) `0 }3 R$ {0 B
| MCASP_RX_CLKFAIL% @  X# C4 {: X+ `; t* C
| MCASP_RX_SYNCERROR 7 f1 _- R5 s* D. d$ A  w' J
| MCASP_RX_OVERRUN);
. I% [8 d( `3 u  L, B}
static void I2SDataTxRxActivate(void)( y  u( O, n1 J8 o7 ]) T
{- x5 o* {8 \; }1 ]' h2 C- w
/* Start the clocks */9 b7 J" [: \) {8 c
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' o- U7 U6 x( Q& H) PMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
- R$ B4 V+ Q' O6 C4 ?9 dEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 ]3 D1 j) N$ R
EDMA3_TRIG_MODE_EVENT);
6 z/ u5 @3 r5 Q1 V$ ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 5 x9 ^0 R* p7 v
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, e6 Z3 ]6 k' d6 [McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 a+ r8 e, i: Z9 \/ _McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
( t7 K1 P- h6 H$ y2 ~8 E2 S2 Vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: f$ z4 B3 v( \2 }
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 x) o- V1 p% o4 V' Q* K- h! a
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 S! B+ r* _* h# s' ~+ h2 b( M7 `}
  |; }! L, w  S  W6 x( d  }
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  e/ K* K  \% @/ }& o7 m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-28 19:22 , Processed in 0.044991 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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