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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13102|回复: 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,+ L) O/ |! t1 p4 a% p* b2 u
input mcasp_ahclkx,! A. P  i# C( e) c
input mcasp_aclkx,( U4 r# B& S4 R. G- D# n
input axr0,. _& R" u+ h; T* `2 T- P7 C
& M# y' G- z/ r% ]4 W
output mcasp_afsr,
8 f* [" S  F* h1 A2 L9 routput mcasp_ahclkr,4 p+ S( X* b: n* y$ ]- }
output mcasp_aclkr,, e7 v' I" Z5 [
output axr1,
! G0 J5 B/ z* d
assign mcasp_afsr = mcasp_afsx;; u- j# j: a% q
assign mcasp_aclkr = mcasp_aclkx;
8 O$ K; }" x) I+ v* ~assign mcasp_ahclkr = mcasp_ahclkx;
6 ~/ O; a* E" G1 P2 e* `3 o! ~1 p0 Wassign axr1 = axr0;

# J- \0 `- g0 `0 e$ B
5 g* V5 @. w0 j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

1 E2 U! _) s. M+ G! d5 k
static void McASPI2SConfigure(void)( x1 _7 S: P4 M, B2 D
{. p% [: W8 k$ |9 X) I; M
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 T8 {+ _7 N. M  fMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 f9 }; _4 c8 Z5 ZMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) N! \1 G* B8 g' V3 c* [9 `! w
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. y6 K- L: U' n( A& D& S% q
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! ?$ |# e% T' q* L. X3 SMCASP_RX_MODE_DMA);( n8 R0 Q9 P; D3 u
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. L4 \% Y1 [+ G) FMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ w) g% z3 i4 M" T) e
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 ~6 ?1 L6 [7 uMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 |' s  {3 k* P! FMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 Z: ]% j  h/ I7 Y* x; M5 w
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# ^; _& f) y4 j; P! w# a8 j
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( P# c2 K* A8 Q( t
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % r& p$ n9 u7 ]1 G
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& M3 P) J- Y9 v7 ?& o
0x00, 0xFF);
/* configure the clock for transmitter */) G+ B/ J1 U7 l) f6 t  F
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. d  S* V/ u. i7 t& t7 l7 B  k
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( y" I9 w: E4 `McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% P- c" G7 m  m, p. M: p0x00, 0xFF);
0 z& L) t: j  e) I' [( B/ n% ]
5 L% n: `+ j; _1 n& b4 A) e8 y/* Enable synchronization of RX and TX sections */ ( l8 Q9 y1 a% O: a, k9 o" s
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */0 N" K- P) Z6 R" a' C3 @; V- b
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 g+ a/ ~! _4 b
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*+ j0 n+ e5 i5 m2 B: I
** Set the serializers, Currently only one serializer is set as# A! J& y: c" A
** transmitter and one serializer as receiver.9 X% m' L  i  f3 X
*/* R, B1 W4 r. b1 K5 z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);, g# T* f( p9 S7 D: @! c) j5 {
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 v! l. I8 v9 k* h8 ~** Configure the McASP pins
9 P. k, v5 p6 p, A0 c. Q** Input - Frame Sync, Clock and Serializer Rx
: Q& ~- ~& S: W** Output - Serializer Tx is connected to the input of the codec
8 T3 O5 n: i$ Y% t7 I$ a4 A$ o( p*/: L$ J7 U" L2 r& D1 ?8 I
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) f$ E+ c9 i% X' H& h$ j/ xMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
4 l5 s7 q* x; c) M4 [9 Y) x1 [; EMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX+ ]- b9 M' v; o) s+ `
| MCASP_PIN_ACLKX
5 Y( R; f5 @3 l1 l2 D' j. N' z$ U| MCASP_PIN_AHCLKX9 ~3 ?7 t6 `% H
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */& W: l9 a# g* M0 s9 y
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
4 e" }4 p# g9 ^  Y| MCASP_TX_CLKFAIL
" K3 F, y, i: y/ j% N6 u" w! v| MCASP_TX_SYNCERROR
7 T' G; P& m: I  a; V+ s| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) V  b- k  [& i( P* x
| MCASP_RX_CLKFAIL
& u/ h, C: j7 {/ s: f( y' ]| MCASP_RX_SYNCERROR
" d; h0 ?6 g2 s5 _. @| MCASP_RX_OVERRUN);
8 f4 \! t; E8 N}
static void I2SDataTxRxActivate(void)  S2 G5 `  \4 q/ q/ B
{
. q( N, ?9 x$ E# N$ P! U/ b7 e- e. i/* Start the clocks */, z7 K8 f+ F5 ]! J7 S8 G
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
7 _/ y/ ~- c0 a6 D0 q0 d/ AMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. l% N! d' C$ w7 D; E( M6 h- kEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,9 f. R. T( ^. g$ d% y+ s3 N& E, x. x
EDMA3_TRIG_MODE_EVENT);5 t2 `- r- x' J$ k0 `) N; ^$ M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 }" k) ?! Q3 }/ e! q4 ~7 q; f7 \EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */8 H* p, f9 P- d. i( f6 X
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 W9 M- {  F- Q) Y
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% C6 B3 s3 R! [% I4 V/ O. h) c
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
5 ^& g6 ?+ V/ f. AMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
3 U& x: Z3 }: ~) VMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
" [1 g4 k! R( R/ P}
4 |+ T* o6 F! p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, ?' f' H. t& Q) L# r& N) m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-24 06:47 , Processed in 0.042307 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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