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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9629|回复: 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,6 [+ a. h5 Q, M2 Z
input mcasp_ahclkx,) }3 T% w& f; i1 a
input mcasp_aclkx,0 E- Y7 p% V% s) U
input axr0,) h' h, @& J9 e8 M! U5 E

2 d( Y+ l4 w1 V6 M) Y) V% voutput mcasp_afsr,
# J& D% O+ ]. P+ ?1 coutput mcasp_ahclkr,$ A$ N( Z1 G, F  M: m+ c
output mcasp_aclkr,3 Y" ^+ W/ L) [2 ~0 F5 W/ P% n
output axr1,
8 j( K- V% A9 d2 y" m
assign mcasp_afsr = mcasp_afsx;" w9 j7 }# J" I- K7 x5 b. g' _
assign mcasp_aclkr = mcasp_aclkx;
! Y8 s$ m' u2 V* ]/ [assign mcasp_ahclkr = mcasp_ahclkx;
* ^6 G5 v: x: p. z- ~8 ?2 Passign axr1 = axr0;

" o7 P4 h  ~+ `3 y9 B3 T( F5 U  G6 w4 {) p/ i) Q0 Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; v% [! k( z0 e; e( o
static void McASPI2SConfigure(void)
! @6 P  j- S% L. L8 S2 Z3 b! j7 k. d{. U- O. }0 d8 N8 O7 S
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
' q7 d3 [7 F$ K  OMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ P, H7 J7 v2 O' r
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
( x  E2 L2 a, V5 H9 h) @McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
' G4 P6 v  \. {/ Y7 ^; PMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' ~4 h5 b1 {! K6 B, U# U3 q( b: m! BMCASP_RX_MODE_DMA);
0 y& h, Z. [7 o* }McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% m5 V2 U2 k6 z  N9 g0 m' \/ t. N
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* q3 |4 V0 o6 N) [9 r; E; o, C, M
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; e/ J1 S) e/ EMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);; H( G) h: ^4 B
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ u5 G; P/ e- gMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
' j8 y0 W7 y- {0 _) YMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 b$ i, t% P; @( P7 W
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
9 Y- g' M3 M" d5 \3 hMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
' e7 ^* b! P' q0 k0x00, 0xFF);
/* configure the clock for transmitter */! |& U1 Q: _1 `$ ?) \
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 I  @. Y0 F9 D5 C) w4 J, G1 l3 aMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % a+ O0 T! e3 i# a! ^
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, q5 l8 n: w! m
0x00, 0xFF);) i# b: R2 c. |0 F0 [
+ f, J9 ^; B7 u  u5 e: w8 l2 V
/* Enable synchronization of RX and TX sections */ : X/ A! B( B+ T2 l4 y' H; n
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */6 ?4 [. ?6 b& Q. F: i7 R
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; u+ F1 j0 g, J8 m6 \3 WMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 P& s$ f5 H# g. O
** Set the serializers, Currently only one serializer is set as$ h& O: p! j1 x+ @. |* L0 }
** transmitter and one serializer as receiver.
* `$ k2 I& s9 u3 u! B*/
6 x3 e3 {! s7 d7 ^: @' n0 `$ ?7 ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);. M% `& N+ }" `8 Z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*4 {& D/ s" Z" A# E+ R( b  Z4 _; W7 Y) }
** Configure the McASP pins ) Z& `8 I6 i0 F3 ?2 I) R
** Input - Frame Sync, Clock and Serializer Rx& F+ m3 y( e) e2 {8 z7 w% z( `
** Output - Serializer Tx is connected to the input of the codec
* K6 l2 ?9 Q; _0 A! {# l# [*/
/ H% p0 B/ L% l1 UMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, O: I4 k; r1 b8 e  A: i0 a
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 S" z1 [" @1 N/ aMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
, \. f: H9 R. t0 E" \| MCASP_PIN_ACLKX) @0 r. ]1 U# t/ Q
| MCASP_PIN_AHCLKX
8 M- G# P4 x; O& k0 R| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */6 [3 t/ G$ n$ Q4 c0 V
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ; r+ K. Z6 ]% d9 `, v
| MCASP_TX_CLKFAIL / B' F' I4 G/ v+ M
| MCASP_TX_SYNCERROR/ m! m2 r4 s* y8 d; s
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - z# L7 C( ?$ ?, [- ^
| MCASP_RX_CLKFAIL+ I8 s' a! c: {/ p: Y7 s! N$ A
| MCASP_RX_SYNCERROR
8 ?  c: |# p4 n8 x( b9 U/ O3 o9 C4 L| MCASP_RX_OVERRUN);
5 l( }, \1 w# ~, f' i  ~}
static void I2SDataTxRxActivate(void)- w' e" e3 Y0 F# H! i; n7 I8 C
{
; w. F) D5 _  i: A/* Start the clocks *// r$ o( _$ r! i6 \
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
! B+ o# g6 B$ \; t. m; `McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 s5 j# a3 j- u1 V6 p7 v$ sEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
/ v0 k" w3 ]& f# d& }2 xEDMA3_TRIG_MODE_EVENT);2 y: F; a; ^0 ~. F+ }. Z# @4 p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
( b7 V7 F& s( o9 r, n- g& W  HEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! e8 E' |, Q0 B! i& K) p  j
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 k5 ^" E- q3 J7 R# q( \McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */; `  @$ H5 p+ }; q0 k% b
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 l6 `% D" n6 u4 w! J
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);& D( u, @7 Q9 w+ a- P  a1 z
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( m: j+ }% s. J6 s. U" E}
2 s( P) P2 L3 ^3 l, z, ]6 r7 W$ g  d
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# T* J% b, |8 M# N4 @$ ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 19:58 , Processed in 0.039496 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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