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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,- s+ ~5 v; m) H8 s+ D
input mcasp_ahclkx,
; @, F# w0 B3 [3 E) m5 _input mcasp_aclkx,# y. k; q: n1 }5 ]0 _8 M
input axr0,
6 n  d* J" n9 h8 g8 T
6 z6 F" {1 S. Doutput mcasp_afsr,6 ?* }+ n: }2 a9 T8 r
output mcasp_ahclkr,
9 H4 k# f- @# K# C% A1 Doutput mcasp_aclkr,6 |( l9 W% x- J' {! c) G' S, D8 c
output axr1,
/ L- t' I+ P$ ~2 B1 }2 R2 h6 z
assign mcasp_afsr = mcasp_afsx;
2 }5 A  E3 Q; g/ H4 e5 s7 s7 ~( kassign mcasp_aclkr = mcasp_aclkx;
' l( y) H5 n% G$ @2 F# g% a1 Massign mcasp_ahclkr = mcasp_ahclkx;6 f! m# D5 Z9 l, F! |
assign axr1 = axr0;
6 g! E! ]$ {6 {1 O2 w
. J" q- O1 A9 m; l) Q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
% _# x7 r  k0 D5 b3 U
static void McASPI2SConfigure(void)
+ |6 p3 l8 B0 Q' `- Q3 E" ~( e7 ?{
" g6 H) q4 \2 J' B0 M" \McASPRxReset(SOC_MCASP_0_CTRL_REGS);6 J5 H6 |+ W6 e# I+ I4 t( Z/ E8 h
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ Z6 n, I, e( N
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);" k; v' g, f+ D' F; b" r% U
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
' Z' k8 W+ w8 g& f# m' [, LMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 f" J! U$ \! a# o
MCASP_RX_MODE_DMA);
9 P6 N3 A1 @4 i( B* G) ]# h: XMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: S3 Z) @0 }- _5 n$ j" C
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */) u& I- N+ ^$ K# r# q& M- X9 o
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . ]2 Z) d! I# }9 o7 c- ^
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 x! Z1 V' ~  r9 o# e& Z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
6 j2 R6 \. j$ T4 ~: z7 _MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ \% Z  p% m* v! u
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 e6 X9 w6 n8 G3 _* r6 _; Y5 ~
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); $ Q4 \0 k7 d/ P" n
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& ?9 ^9 J+ g% z  L. ?9 T
0x00, 0xFF);
/* configure the clock for transmitter */
! q6 @8 m* a2 y0 @* ?+ z7 nMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. |$ h! k4 X& @4 gMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 2 |7 w' l. n% L$ K  G
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 A; ^% h6 I: e, P8 k4 g
0x00, 0xFF);
4 Q+ F: A( r1 R/ k; `% y% }: k! X9 f1 ^3 v
/* Enable synchronization of RX and TX sections */
) ~- F; U- M% L9 VMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) p$ v! o8 U( u5 DMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
# ~5 K6 M  u' ^. ?$ i. b, `0 H: `McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" p+ p2 B* e1 a
** Set the serializers, Currently only one serializer is set as
+ a" a7 |6 P* M" Q  K** transmitter and one serializer as receiver.
0 Y9 n  M8 M" D" X, c7 ~*/8 e3 C$ [# d; _; n
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 Z% Z2 @7 M  I
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
$ T* ^% A, W3 I2 W% `** Configure the McASP pins ; ^7 T$ K5 S% J0 f# }6 Z
** Input - Frame Sync, Clock and Serializer Rx
0 L: O* }8 ]$ w- f, D8 @** Output - Serializer Tx is connected to the input of the codec 2 \0 Q0 q, W" _8 N! H3 R
*/
% K, S" X2 U* @9 hMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 |2 a7 y* @! D
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));; E; `9 J* M5 F; f; y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX. Q( i( x& F' P$ [( B3 c% ^/ D3 R
| MCASP_PIN_ACLKX9 T. R4 Q. \7 ^  I! ]; S
| MCASP_PIN_AHCLKX$ f; C' {0 u+ ]0 X7 o
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 {4 E* m: U6 d2 G# V* FMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! d' {) L/ ?6 m0 ?9 D
| MCASP_TX_CLKFAIL
3 q$ J$ V; p) Z  ^+ s' ?: ]6 `| MCASP_TX_SYNCERROR
. r4 F7 F3 }) K( A| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 N! P* X8 W1 d0 Q( }
| MCASP_RX_CLKFAIL9 b5 A. e) l* ]" y6 T% [- t7 J
| MCASP_RX_SYNCERROR
- u7 Y4 s% a% [/ f+ X4 }| MCASP_RX_OVERRUN);" A/ ^4 t/ q& v" h6 r
}
static void I2SDataTxRxActivate(void)2 R- ]7 N: z* u3 {5 s7 \6 N
{2 }+ `$ \( A/ [4 p: ]
/* Start the clocks */& X: Y9 H" g+ P& }0 m- u
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, v4 ?4 [* ~# p9 R( eMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */( J7 ~" [2 i8 p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,( L* O( E" a$ v! L# w
EDMA3_TRIG_MODE_EVENT);9 \) U0 ?9 g; J" K6 X( J: @
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,   g# f5 N  n  e: ?/ Y  d  z! R" H
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 K( }9 g, p$ a* HMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% Q5 s3 I2 x, E0 x. ]! o. IMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# E2 M- U* K, X" \while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
+ Z- {" d* e0 r. lMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);- [4 N; N9 P2 x4 z
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
  b3 |9 W- ]: O# Z6 _}

7 |/ s/ s' ^7 X4 r- X4 x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
' Z( W' e( `8 n, k; p! D) P+ y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 11:37 , Processed in 0.044332 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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