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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8803|回复: 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,5 C. u- s8 ^# ^) n+ T1 [. k+ c
input mcasp_ahclkx,
2 X+ S, b# x. z* K# F! _! Minput mcasp_aclkx,$ p* O- U! j. i1 ^2 y" k: J
input axr0,
! M2 r5 E5 a6 N+ S3 ]
9 }# ?& k# N2 w. m6 r/ ~' ooutput mcasp_afsr,* r. }6 i* B( A8 Y0 Q
output mcasp_ahclkr,
3 ]' F4 C0 y% uoutput mcasp_aclkr,/ T* Q- G( F+ {
output axr1,
9 v, e  r; J* W0 {# I
assign mcasp_afsr = mcasp_afsx;' h$ b+ E) n; w% E6 v  N
assign mcasp_aclkr = mcasp_aclkx;$ F% R" s9 c& P* L/ D6 e$ P
assign mcasp_ahclkr = mcasp_ahclkx;
, Q( r  b# C- q9 \2 M1 Nassign axr1 = axr0;
/ e4 s9 _. Z# I& X

2 [' d+ M7 n  ~( c8 c# P0 B( R
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# I0 d# L; M* V6 P
static void McASPI2SConfigure(void)9 {4 r5 }0 f! m: ]
{
/ m0 ^4 \& {" J. m6 YMcASPRxReset(SOC_MCASP_0_CTRL_REGS);  L) @) V' L8 R3 R6 \7 P
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" a6 D" c7 {3 @5 F+ v
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
- i1 y. n; P$ P# N& u1 YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
2 R) S  {) Q" `0 `- ^5 w8 T6 g- TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ l1 v$ k2 J& o* w  i9 [2 D
MCASP_RX_MODE_DMA);9 |. W9 P: g0 C* E  J
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 k4 w5 v3 l7 M- CMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ g: ?$ d4 K" [- q1 EMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) t5 o' n2 y- x4 B+ y7 R1 S
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 d- ]4 o+ |6 zMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 b1 h5 A# Y1 l8 q  J) C5 b
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! V- r2 h! w1 I, ~6 @* `McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
; ]1 q) `: y" b8 t- OMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) j; r3 P" Y! `! q: p8 b, o
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& M/ @' G6 O7 S; }0x00, 0xFF);
/* configure the clock for transmitter */. ]# m+ o) b! }* l5 ^- |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) _8 Q$ e" f, a6 L8 ^
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); . D7 n3 f) W5 v8 t# H3 r. k3 `$ a
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
( m! h/ }- z2 |0 W6 }0x00, 0xFF);
. b" o$ w: A: b  ]$ W0 r- s
- Q) a% t  R' z3 `/* Enable synchronization of RX and TX sections */ % j) s9 Y- y6 F, b6 _
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
5 w* j0 o, D3 R) @9 _2 \; C/ sMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
# O' ~+ b: O9 ?) Y; f' H& o, q4 EMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. F& @" ?! V% o0 H) o( h) D** Set the serializers, Currently only one serializer is set as+ u- V) _, r3 g0 E
** transmitter and one serializer as receiver.
6 V. Z3 Q! [5 M' {; I0 ?6 \*/8 W# ]* {3 \# z0 n9 s: ^
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' g: Y: B$ g+ Q. UMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 O5 P8 h/ N1 B9 o1 v7 X
** Configure the McASP pins 7 p: Y( M4 X) s+ ?6 u2 h
** Input - Frame Sync, Clock and Serializer Rx+ I9 c6 S) N* c* s% F6 q
** Output - Serializer Tx is connected to the input of the codec + u. ^- i* F+ ?3 [' `: F4 _
*/
, W" B: V6 W# M2 `McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 C% ]% e* y8 E2 lMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& y. G$ ^2 B7 B9 C5 R
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 _# f; J/ b8 ?  y0 p
| MCASP_PIN_ACLKX
0 n9 F, d3 @/ |2 o: ^( ]( X| MCASP_PIN_AHCLKX5 G1 S9 c2 q  v
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
! ~- }' l) O/ ?McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 C4 ^+ ^: }) b8 Y) i* o0 Z" [. a
| MCASP_TX_CLKFAIL $ T& h" i# Z" O1 u: F& C
| MCASP_TX_SYNCERROR
; F! M+ Z; c- X1 ~, |) U; M| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
/ {  _+ V& [, f9 Y9 C- N; d| MCASP_RX_CLKFAIL7 ?  S& @4 r7 q- d# \
| MCASP_RX_SYNCERROR
" M. A/ n/ N0 g% }3 p| MCASP_RX_OVERRUN);5 g7 T4 F: x: s) X8 _/ K
}
static void I2SDataTxRxActivate(void)
- j: e1 T0 W! q6 J+ {1 ]{
0 Q3 l4 O! Z8 `& z! w2 Q. [/* Start the clocks */- \0 c5 r$ q7 C. U( ~
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
4 B2 L3 }9 ]2 E8 B  r% J' cMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */% O( H' [. O0 D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% z$ z6 ?5 a$ B' {. x( ~EDMA3_TRIG_MODE_EVENT);; q; E# E# q  }! J  t( B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 d3 M! b- n5 v% L- f  T+ {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, X5 j. W) Y1 t  [
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);# @2 |" m; n( o7 \; ], \  ^- h
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */! W+ J/ d3 F: r8 l' Y# j9 a
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 D3 N" I' N$ i' x
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);* @' [) {& S) W" G& H
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);/ ]; ~3 l$ I7 l# _% N- x4 M  [
}
+ C9 S! c# ?  i5 u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% ?: G# Y9 \+ e3 U" J: Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-5 21:03 , Processed in 0.039060 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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