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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10226|回复: 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,
: E7 W( d1 G- M6 n8 ?input mcasp_ahclkx,8 G7 ]+ o1 V- C6 M2 A
input mcasp_aclkx,2 m1 y& d/ E7 c
input axr0,3 c9 ^8 T1 X9 l: X4 u: C: S+ q
0 o$ d$ T) ?5 W9 A* N2 R2 I
output mcasp_afsr,4 v% ^! B  U; T) ^9 s2 K4 l( D
output mcasp_ahclkr,8 R* M8 K1 o  u  B2 a$ `
output mcasp_aclkr,1 @( S2 E7 l8 j% E. B, x
output axr1,
+ y0 i+ K. n% b! Z6 o* m
assign mcasp_afsr = mcasp_afsx;
3 \/ ^- r  e, g; l# @assign mcasp_aclkr = mcasp_aclkx;
1 L; b( ?0 U6 v6 ~! P9 d- Eassign mcasp_ahclkr = mcasp_ahclkx;; y7 B* p8 Z. R& ^" A' m9 M
assign axr1 = axr0;
. H" g: b. d8 [: \9 a' N
% f% T; X* d, U* S# A
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; {$ O' o& p0 h( n& M! l- }8 x
static void McASPI2SConfigure(void)- c; `; i& N, v; M% [& W
{
5 }0 W) O( r  d/ PMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
9 j$ W! l. j; ^3 Y5 wMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. Y( M7 q% d6 C4 @0 @2 J2 E$ D
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
6 c( Y. N: Y: F# ~) TMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */; X" V& U7 f( i
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 G; i9 e# U( J
MCASP_RX_MODE_DMA);
; r' V5 x! h- O' i' `McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% g' f- \8 T+ @  i
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, ~1 k. e2 j- o0 }! a; p, ^McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
  O7 G- W6 E9 {9 x9 q3 ]) C/ xMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 Q$ l% v4 d" j& `McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
) B& l8 a" \3 k6 cMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
& U- z7 [0 [$ d2 V  nMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 u! _& p7 r2 C
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); - F) g1 j  o7 z. {
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) ^2 ^& z2 m6 K$ }7 b8 u0x00, 0xFF);
/* configure the clock for transmitter */1 K6 D, i0 u; h. q; p7 c( J
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);, i' q7 ~, [$ z+ i5 s* ]
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & Z# Y; B5 P1 v4 Z
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
8 _; {* L* c, T# G0x00, 0xFF);
1 i' C8 o6 {( _" j5 U! s
% p6 C, p8 u) i" q3 h" y% K/ Q/* Enable synchronization of RX and TX sections */
9 f; h0 Z8 k; [. w+ pMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( g0 @3 J, X$ G- k
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. m$ j& W  Y$ Z" R! g4 rMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 U- Z9 K+ q6 g/ o0 {; ~3 j** Set the serializers, Currently only one serializer is set as
( V% ]) n( [) b: p- ~) H4 V** transmitter and one serializer as receiver.
1 T7 r* y. U1 D# a*/+ ~& ~3 M; f# `
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 m$ D  O# t7 o+ c6 vMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 p5 U2 F* H. J. R% _  \+ ]- H** Configure the McASP pins
; J3 l6 o  F9 l, @6 J9 c: _** Input - Frame Sync, Clock and Serializer Rx8 t7 x0 n1 }% j' g
** Output - Serializer Tx is connected to the input of the codec 9 K: M( P. w3 q6 s% k+ T
*/
& e; y9 z+ O/ R) ]2 }3 Y0 Z6 PMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 E% I5 H5 `4 q. V5 `: X# S
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& l, |& c" [) s+ R; a
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' b, T, J- q2 f! S5 B* f# a% n
| MCASP_PIN_ACLKX, g" [- O- d5 h
| MCASP_PIN_AHCLKX& j; |; l; \7 s" V! P& z
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' G; q- Z! {1 ]: `: `% @2 ~7 {( D0 e
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 7 [4 O4 T/ k* M3 E& c3 P" x* Y
| MCASP_TX_CLKFAIL
" G' Z) o( F2 h; T; u| MCASP_TX_SYNCERROR
5 X  k* n0 K+ B- y/ i8 [  M$ q| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* U$ j5 L4 |- B& i, x+ n( [) ?| MCASP_RX_CLKFAIL
2 A& n3 Q( R( J' {* u7 @| MCASP_RX_SYNCERROR
) z0 z3 a) R$ D8 a5 b' G! r8 M| MCASP_RX_OVERRUN);2 M9 C2 ?+ @& |
}
static void I2SDataTxRxActivate(void)/ l# a. ^* p) W8 p/ r# Y/ I
{; V4 w4 b) i0 C- u$ P
/* Start the clocks */
/ [: E# `' x, t% u6 S, A- XMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
2 q, f1 Q1 Y/ c7 _6 z9 Z0 J' DMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
+ g* {" y6 H" \, Y  l7 A, oEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,0 A6 n, L$ S! v8 ?# t
EDMA3_TRIG_MODE_EVENT);9 w, C- P7 l7 `8 P) n- O
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& D8 v3 J, a9 k- x  o0 p) [% pEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
7 H/ D2 b2 v4 z& f! pMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);) K. t6 v( Q( O2 |) \* `6 j5 q
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* ^$ [- t! |. {$ i4 \5 lwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ ^! x6 c) k( n/ B8 {
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 O- x8 Y" }1 {$ F7 ]2 t
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);" e3 s9 Q" D/ E" ]8 s( m
}

6 a4 x" R" ]6 u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 K: L) t. R3 B" t. b: e. P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-1 03:38 , Processed in 0.042299 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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