MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8421|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,3 P7 {3 k4 j; b/ o9 \( `! O  J0 Z
input mcasp_ahclkx,3 b& K7 Q7 p# p, M
input mcasp_aclkx,* v/ l! d0 Y& a/ h( ?
input axr0,
4 |6 [' E. Q$ [9 d, @, _8 v
* V- x3 v+ c" }# Coutput mcasp_afsr,* r, d! v% A8 S+ [/ K' z0 E
output mcasp_ahclkr,
' w, L, X3 t5 U* s7 Uoutput mcasp_aclkr,- N6 P6 e% c1 [- ~
output axr1,
$ A% \( M! ], g5 o6 [
assign mcasp_afsr = mcasp_afsx;! c4 @" c5 f8 B# \* a
assign mcasp_aclkr = mcasp_aclkx;
5 t" G) A% I; |assign mcasp_ahclkr = mcasp_ahclkx;
) B1 i. t2 n7 r, N+ Y! Massign axr1 = axr0;

/ Y! L7 e2 P4 Q  k  T8 k0 b% s
6 D1 w8 K. {3 ?1 x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: _' T' J9 B' O& F+ Z6 G
static void McASPI2SConfigure(void)  L; E" {) o/ r, Y9 b8 o# q# H" o
{
7 C! k8 y& \; ?McASPRxReset(SOC_MCASP_0_CTRL_REGS);* K, @! c; k8 F* i$ r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */& o9 ~6 F- H  r1 A3 @
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. l  B* m# l1 i* u8 X4 m
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */$ M0 j& p+ k" Y8 G' m8 M1 t! J% M
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( I4 ]! w0 Y/ Y0 A. E
MCASP_RX_MODE_DMA);* V7 v0 T; ^5 U5 k3 p/ _1 h
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ r5 ~( e; g4 b# [# zMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
& g2 w) ?  H0 T2 M/ BMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
% K% G% n1 F4 u# \$ O- @) J7 lMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
& d  M5 a4 T$ Z1 r5 n& L# ~McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 P3 E6 q) U- aMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
0 p2 K7 ~' E2 k3 K5 p0 Q  \McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);- Z! ?( g% D: s) Z  v" x, [
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# p8 @. S/ N+ w- K7 S0 nMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 _/ e% ]- z. f' S0x00, 0xFF);
/* configure the clock for transmitter */
9 G- |# S# z& m/ z- V. G% dMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
: @+ V/ w( W. R" \1 `) ^McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
* j1 @, n( X; S  ]9 F6 ~* r* V  \McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  D/ L9 f3 H: i7 S) k& B
0x00, 0xFF);9 l/ U( K0 C. g/ g) G' |
3 N9 H6 Y$ x! {+ g* x' Q* L
/* Enable synchronization of RX and TX sections */
- G) ]+ n/ {/ L: O- ~# d/ AMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ T- T; \- z, z5 ?& K! _6 q; m
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ Q8 N2 B4 ?! n7 ?* A7 |9 m
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- H' `; V: P$ h# ~, _1 Q3 ^
** Set the serializers, Currently only one serializer is set as
% J* f+ L1 ~4 I  M+ M$ G' Z: X& Q! J** transmitter and one serializer as receiver.
7 n; N7 S6 @$ |9 x$ x*/
4 }# K8 U" F& fMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' q2 D# P8 R! S/ w8 s$ u1 T# I4 IMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
4 i$ F9 R! ?# Q* b2 y** Configure the McASP pins
% Z. ]/ F+ V1 O; [** Input - Frame Sync, Clock and Serializer Rx) H3 [: y8 i9 G3 Q" e6 s3 ?
** Output - Serializer Tx is connected to the input of the codec ! e$ p: O6 w  `% w9 z0 n
*/3 ^5 q1 `. t! @& b& D8 t
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);# c& V& O9 O6 r4 b& O- J+ H. w& d
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: a* O/ B& Q$ X( ]0 y7 |
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX; R# j) B; h6 O
| MCASP_PIN_ACLKX3 Q! `# @7 a1 K& P4 g
| MCASP_PIN_AHCLKX# u: `8 J1 M! Q: \
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
8 _4 I: @" K8 P# C1 y% S  G* \5 b! ^McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ b6 V8 f5 O+ G9 G9 N| MCASP_TX_CLKFAIL ) K0 J  y0 }* P4 J: n& F
| MCASP_TX_SYNCERROR" w) D4 [. L( h1 b7 x4 z
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % L( [' E, L0 \4 u/ X  Y2 D
| MCASP_RX_CLKFAIL. e# n# I- a+ T, j$ c/ T' r
| MCASP_RX_SYNCERROR + X6 s) x6 Q( p! K3 B
| MCASP_RX_OVERRUN);, d% C/ c! b8 Z+ L( y- I( Q, u+ \
}
static void I2SDataTxRxActivate(void)' V( E2 ]  q3 \
{4 _, x' `2 B! R- V. T3 h
/* Start the clocks */
/ v: B8 X  L7 o6 o: O6 u$ h: LMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 p! K6 R# ^; r" K8 T6 @McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 `1 m6 C0 x2 Y! NEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
! @- C3 ^- _7 G! R, ?0 l) l5 TEDMA3_TRIG_MODE_EVENT);3 M8 ?0 T; Z% J% r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 d' A* x2 t' P# C) W# H6 sEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) D' D1 m, ~7 B0 }6 e4 cMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 c' F3 a7 i$ Q4 r# [
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) B7 o2 `7 V  L( l- N4 r
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 \1 [* g6 _+ d
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 s! O0 c; Y  K4 I- x
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
* M2 w- @' j# l" W& A}
. l) U  G" p0 o7 {* C7 {# h7 b) l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# z6 q# c" V4 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-22 14:21 , Processed in 0.038764 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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