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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10336|回复: 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,
" p- F- o4 e+ d+ W, rinput mcasp_ahclkx,  }* _: O( ?4 o" K. R
input mcasp_aclkx,( B- l$ P: Y8 B) r" [3 P
input axr0,9 q* T* K: M% V1 z$ {# ^& N, S, C

1 D* M* }8 y1 R. A% }; boutput mcasp_afsr,; q# O: ]7 d( ], J. N( V$ w
output mcasp_ahclkr,; _, {2 f# S/ _( s
output mcasp_aclkr,4 n2 e2 d/ f* r& v4 s
output axr1,* A1 ^7 d5 ?2 F
assign mcasp_afsr = mcasp_afsx;$ a: V0 f; F  y# U* f* j
assign mcasp_aclkr = mcasp_aclkx;
8 n# K$ b5 ]9 ~; g3 A: J% S# Uassign mcasp_ahclkr = mcasp_ahclkx;
$ Q7 \, v8 P3 d0 vassign axr1 = axr0;
6 T/ Y9 \( D+ A

$ m0 @- p* _% `* x* ]& t) H/ M- [
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  W* U5 F' D6 {7 |8 z
static void McASPI2SConfigure(void)
3 d- w% @! _6 W  D{3 u7 \) B! _) r7 H" \
McASPRxReset(SOC_MCASP_0_CTRL_REGS);7 g2 z  Z8 i, ]2 K+ a
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. ]4 v) ^- ~1 Y' e
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
4 H% g8 m5 V# M+ Z2 ?- ]* iMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
8 {# C/ F' g5 ?; e: W7 `7 TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 V" K/ |# J( h+ k* h- i0 D$ M
MCASP_RX_MODE_DMA);; p3 a! J) \. R( I
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ T: Y; _- G: Q! l% x# k& b8 cMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */0 ^9 P) o( @8 ~4 l1 M
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, - X6 T6 g7 z# X5 U) u; Y" U
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 {7 Y3 G7 b+ z. l- IMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 `0 |. p' A( \) t9 b) Z. B
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 w  @9 r! R( g+ Z6 CMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 [( `$ P; S0 f- K5 }
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
: J. L1 ~- j3 H# z& JMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
- _( P. i! I$ R' N0x00, 0xFF);
/* configure the clock for transmitter */
6 K  j" [7 P* ]. Y% s( b% ZMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 e1 ]/ B9 O' Q( o0 @: o3 j1 f4 aMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % o" L  a4 F. N3 w
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ T$ w+ `7 }+ o' C/ n' P, _5 @0x00, 0xFF);
$ R0 @/ e. ^: J$ ~6 l  H6 m& t5 m
' p' L+ Y' D4 z. V/* Enable synchronization of RX and TX sections */ 5 I* e% T7 `. \7 c, B2 [
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
3 }: B8 W8 ~8 Z" r+ k9 C& DMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 M+ C) |) W0 Z7 B7 M. Z- C$ xMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- t( u. x# w# t** Set the serializers, Currently only one serializer is set as
: p+ j4 a$ `0 C1 X+ k** transmitter and one serializer as receiver.4 |0 _! Q4 d% ^: Z; D0 o% W
*/
% W5 H9 v1 a- @: V6 [) z9 r+ ^McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' k. H8 I( ]/ [McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*4 {2 F" ?2 l6 Q0 _! x
** Configure the McASP pins 6 D; `! W* V/ F1 r2 V) `% P# [
** Input - Frame Sync, Clock and Serializer Rx
; ^$ ~! \& P2 |5 }2 |. q3 S: j: g** Output - Serializer Tx is connected to the input of the codec 9 K$ p; n; ^, A& ~2 O
*/0 p. h. W& N1 m7 h) j7 n% G/ y
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 x! F" c+ K0 N3 Z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
' m  w% x+ d  ~2 z/ BMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX: Y' M! c& i# F  F# D9 l
| MCASP_PIN_ACLKX
  p. @1 R( n9 L; d# D( d  f| MCASP_PIN_AHCLKX- k3 Z, w/ c& n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP *// j0 |- M3 [6 w$ N6 B
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. n+ k3 z' [- m+ g0 i| MCASP_TX_CLKFAIL
7 M) g) {7 [) N3 ]) B| MCASP_TX_SYNCERROR
2 Q- [8 {9 I9 W  d| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 @. B6 S7 C* S& r| MCASP_RX_CLKFAIL) M. b& H7 @2 l5 R% }
| MCASP_RX_SYNCERROR : A0 \% c7 {4 H. r$ x7 W$ l. s
| MCASP_RX_OVERRUN);
1 G/ J8 r9 Z, m}
static void I2SDataTxRxActivate(void)
$ T7 L/ J& F# T4 }{
* b6 F  Y4 Q& g. J6 {4 Z0 H/* Start the clocks */9 _/ p: k( @  V1 ^) C4 r( l* E* J
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& W& \9 ^) _: J  E
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  T+ K) Z5 U& `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
, v9 y6 c- B* S( zEDMA3_TRIG_MODE_EVENT);. q5 |+ U8 o* l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : m7 g  Y6 M/ C1 p, T
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: a) E6 h2 [( W9 e0 O; R, f
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' U) x  s, J2 V  \6 `: OMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
5 ]/ \8 B; d# e* ]! k' r- cwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 `! E9 v. W# k" Q8 {/ m) PMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 d& _  S# q( x5 _7 {9 y5 R* }McASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 r" T6 B' a# }2 q
}
$ _, s1 f1 r, Z# @. W# |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 B( [! r- \- n) t  @! V' l$ v# Z, I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-4 01:45 , Processed in 0.039929 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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