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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12618|回复: 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,
4 L& O6 T$ r+ Y3 zinput mcasp_ahclkx,% t9 E' K9 }; ~2 M) f
input mcasp_aclkx,
' G* m4 M. x! c1 k! U" N' xinput axr0,5 P6 s5 t+ t, ^$ b

, ^, j0 |: k/ A! Q5 Q$ u4 |output mcasp_afsr,4 W/ r5 A6 G. t- `2 j6 g
output mcasp_ahclkr,, V% _% E, n4 h* R- W
output mcasp_aclkr,
0 D" a& ]1 v2 k0 ]) p0 Woutput axr1,
& C9 x. [4 w: s/ r1 F
assign mcasp_afsr = mcasp_afsx;
! W; e  G4 j! m1 J  Bassign mcasp_aclkr = mcasp_aclkx;
; {7 q+ O9 i* G- m/ }0 j' Wassign mcasp_ahclkr = mcasp_ahclkx;$ N1 G* c/ A4 w- J  j
assign axr1 = axr0;

. |% ~8 {& j4 X/ C
! ~/ s" n7 C1 Q5 a" K( H. |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
7 u5 C' m& t9 b& M6 ?! X. `+ C
static void McASPI2SConfigure(void)
+ c% s5 U$ q! k{+ m2 J& z; U; o* u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
, s& O& B0 i: c( ]7 ^9 iMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
  W/ z$ N" b; y* ~* Y0 QMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
* x/ L$ I9 f* sMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! j! f3 H' D. \; e  TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 B; A6 X. B4 N( U3 Y3 T! [, ~
MCASP_RX_MODE_DMA);
4 ^  B. n8 J: N9 w9 z' QMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* k0 O$ p: N6 V1 g$ M
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& E2 }) O) D/ f7 A- J
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
+ M$ L  c) v2 n+ S, T+ W& WMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
- n4 |  A* O. f$ C" s. E& }McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 X4 t4 y) t3 A$ _
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. G8 a: L1 b1 O$ l' M# s; ^1 _
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);" K* e" F7 M# w" Y) o8 b* T
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 J2 F1 V; o& o8 ]3 F, L8 Y
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, e0 V# ~6 b, A2 C9 f# H$ Y
0x00, 0xFF);
/* configure the clock for transmitter */
& T* {) o7 ]& Z" y( [McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' H& e/ w5 u( I" j8 w# j
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 e( d1 Y. s- M+ d9 d( NMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,; U3 K% U+ N5 \! V2 N
0x00, 0xFF);$ E5 Y4 M  V% ]1 `# y

* ?) F4 C) _2 c  I& E/* Enable synchronization of RX and TX sections */ 7 p, w7 y5 r8 e# N% W* R1 ^* s
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */! O. T7 M6 K8 Z3 l4 ]% j9 G
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);# Y: p% ]( x  d
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*$ l) j8 C6 ]( Q: e
** Set the serializers, Currently only one serializer is set as
; k! x$ N5 C) h; d** transmitter and one serializer as receiver.* W) C9 C$ ^% y" P! V
*/
& N  T; T, }5 y- R  W7 ]: u$ f9 KMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( F) C' h5 A+ ?% f8 i, [4 X
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*9 d1 Q! X0 P6 r/ u, V! m9 e8 x
** Configure the McASP pins
& I) I2 v, l6 d0 r% I" f** Input - Frame Sync, Clock and Serializer Rx
+ A# ^( D! `! ^6 Q1 c** Output - Serializer Tx is connected to the input of the codec $ w8 X' \1 {5 @& [( [6 \! f4 F
*/
$ [; W& ^) V$ @# gMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);% Q3 e& R: G: e5 r, X
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));; Z4 _6 e* G) i" V) ^
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 a' I+ y0 ^* l7 I
| MCASP_PIN_ACLKX. J4 ]7 `8 ^  ?6 X0 c
| MCASP_PIN_AHCLKX
2 X; i3 Q7 g. D| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
; N% {7 W% S9 s8 fMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ) W( ^! v& J2 X5 r/ b
| MCASP_TX_CLKFAIL + p& d: _* _; W+ z$ l8 {, b( T# f
| MCASP_TX_SYNCERROR
- b6 H1 A  ]) I! i, \| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( \# f4 t0 L' \" o, Q1 ~# i7 T7 N8 D  g
| MCASP_RX_CLKFAIL- w" v0 @/ F* F# B' v/ `, d2 v
| MCASP_RX_SYNCERROR : }% @) E% W- ?' ?& }( v- t1 k( r
| MCASP_RX_OVERRUN);, D* [5 y8 \$ f+ K0 q% @4 l
}
static void I2SDataTxRxActivate(void)5 X) N5 l* u! D! K
{) `* A( z$ ]$ M5 J3 F( Q) O
/* Start the clocks */
+ c# Z# h; f9 P7 r6 _6 {" AMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ z( Q2 q& k. E2 O
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; }6 Z- _  y( o/ u6 K5 R3 n2 VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
$ d+ K) T% N0 HEDMA3_TRIG_MODE_EVENT);5 d8 {/ m/ e# U! Z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 X0 T0 e9 n( P3 {7 Q* a4 q& B
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */; q1 ?# Q( {  f% L3 V- ^
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
/ a: f5 s; H& GMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ G6 f: |% ?1 w+ E1 i. U: m. owhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */& X4 {$ p% L$ h  w* u1 h
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);6 {+ K& {' i% e8 L8 v
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 j6 y) g/ M5 _7 f
}
& T( y& j$ D& t6 r0 N6 z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* f3 b% |& N& A) K- L( g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-24 01:42 , Processed in 0.046875 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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