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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10679|回复: 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,
# _9 l: W8 D1 A2 winput mcasp_ahclkx,
$ o7 i) {+ X; t( i9 Jinput mcasp_aclkx,
* n( L' N9 X0 X3 I  Y: Zinput axr0,: D6 c! c; G% }$ L( x# ?$ F; E
* N" Z* f$ ]: S
output mcasp_afsr,$ a! C% A7 n- n, C& @3 i
output mcasp_ahclkr,8 l, @. K/ ~" |
output mcasp_aclkr,% \$ H" v+ S6 U; f5 q4 z1 n
output axr1,
- M1 K0 }0 S1 q# t# m% R/ ]4 Y( B& u! g
assign mcasp_afsr = mcasp_afsx;6 t7 V5 e3 U3 d2 R+ n# H7 q1 v
assign mcasp_aclkr = mcasp_aclkx;) g4 {' y5 @' m
assign mcasp_ahclkr = mcasp_ahclkx;  P4 z+ |1 p& H6 w  l9 L
assign axr1 = axr0;
3 B, W, @3 q. ]( F/ }2 v

, \% P3 {  D- v: @0 _% R/ }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
- F9 `$ M" ?- ?% g( R
static void McASPI2SConfigure(void)& R0 V1 R0 k( P! i& j2 g2 G
{' A- O9 E7 f, }/ ^
McASPRxReset(SOC_MCASP_0_CTRL_REGS);0 e) q! o# ?! _, U
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
/ s/ X$ M7 ^( W+ ]McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
6 R$ z' G* J( T  v' n4 c* m3 }McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* B9 J; P1 u* a" R  ZMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 v9 e, ~# @7 d* Q% [
MCASP_RX_MODE_DMA);
" O* W; b9 M5 w  y% U4 M2 T0 NMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 B& }5 i& P' r& |9 ~2 E; V  VMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 M7 h- \) ^0 l6 H  ?# T) a
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 e% n$ e6 V! ^5 L6 l4 s
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
& d2 M& {5 E$ B& m6 f9 a, p) VMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 x6 \7 f# G: `7 K. X, S
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; K( U$ T. U5 f1 n6 }' S$ N
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. R/ v, z% X6 q* Z( Y/ G
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ Q9 C1 b2 g4 M7 i0 z) u) k  sMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,5 o) {+ R3 K6 p( W
0x00, 0xFF);
/* configure the clock for transmitter */: F: j" r0 B! }5 ~- ^3 m
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
: [0 ]# h! J! n/ U3 a3 ?& aMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - B2 [* \# W# }" W9 }) S
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
1 `: o0 a: z) ~4 W' S) {. G0x00, 0xFF);' O& [* z* W- y( u$ v5 E
# ]1 N; f- u& Z
/* Enable synchronization of RX and TX sections */ . u) {3 N# j# j' \8 ^1 X- S
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */9 `2 S7 a& A1 X" G9 W5 y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% G; h! z+ W: z2 k% ?& g% C5 ]0 \McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 ?3 k! ?/ P* @) N+ `; l( O5 `& I6 D
** Set the serializers, Currently only one serializer is set as$ y! {" H8 m' _2 d- V
** transmitter and one serializer as receiver.
1 }% L3 O1 x- W( f; i*/7 R0 ]# ?0 ?) |
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
. i' R" L" t. Z$ i' b2 yMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 m" R$ ?/ G0 U1 b. j* J3 r% L
** Configure the McASP pins
# r' ?  n+ C$ a1 i8 e** Input - Frame Sync, Clock and Serializer Rx
' w) ~6 q" m5 |$ j3 V$ {** Output - Serializer Tx is connected to the input of the codec
7 `. t( B  @6 ~% f*/
% k, ~, J% p8 w3 l" S. |McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# X- t$ P' N. y4 m2 e/ D' U2 oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
4 A. K" l! ?+ W' M2 lMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& C$ g2 a  \3 R$ a# G. A: U| MCASP_PIN_ACLKX9 f/ @3 V8 I* |' Z1 X5 P& h: T
| MCASP_PIN_AHCLKX* N, ^  M$ L" a2 v
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- T) g3 g1 v' E% i, i
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 3 g, m# h. g: @( N
| MCASP_TX_CLKFAIL ' E7 I/ n( h! f: |+ v
| MCASP_TX_SYNCERROR. s5 ~, w+ w& k8 X
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
5 }' ]: J. c! \! \; x| MCASP_RX_CLKFAIL
9 j& ]1 ^* u9 u| MCASP_RX_SYNCERROR " K! e& E+ l. b  }$ g- K6 ]( G6 e
| MCASP_RX_OVERRUN);
( C) C* L! I& l7 K# k( o5 {}
static void I2SDataTxRxActivate(void)
$ X- x) w& R/ Z% T* D/ R0 R; e+ Q7 H{
) Q' k5 N5 [! v% L: W9 k$ F4 K/* Start the clocks */
& d0 d. f, w( T" H& b  KMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 H; \7 M8 v+ x, eMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. E: H$ ?( [) HEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
1 s: R3 a8 D5 T5 c. z8 mEDMA3_TRIG_MODE_EVENT);- r/ A. l3 v9 r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  u0 g, z/ ^7 b3 O2 iEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" z$ k( e0 N% ?* j
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' C( E% m! K2 ?- uMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( F' c% p: p* f. L2 l
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# e) [3 e" J) U! ?3 l6 L- Y# p
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);6 l* B+ Y1 T% W- o, r
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% b; H/ p( Y. B( U9 \}
& `9 k/ |: g/ L- O7 K1 |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
& P2 `7 ~( a/ }5 D( t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-13 00:27 , Processed in 0.039885 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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