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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12253|回复: 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,
6 P( Y, @( X, Z! A( O4 A9 }9 n5 binput mcasp_ahclkx,
' ?1 m4 q. U6 yinput mcasp_aclkx,
* ~' |. Q. _9 z9 O2 `* ^% pinput axr0,+ H6 T3 S$ e% a5 E% e  |  k  T

/ K4 V/ O& R  H% c6 t2 t; \/ s" e) Ioutput mcasp_afsr,' P' I* m  U' ]3 l5 H7 T
output mcasp_ahclkr,
) Q, s/ M% W) l9 h+ P6 |output mcasp_aclkr,+ B6 D% e" w! {7 n3 o+ o
output axr1,
0 {7 i  e8 H$ H7 ]
assign mcasp_afsr = mcasp_afsx;: x. s. |5 ]! U" w9 d5 R; k4 \
assign mcasp_aclkr = mcasp_aclkx;
7 A/ ]! `4 O( _6 R8 iassign mcasp_ahclkr = mcasp_ahclkx;
* ?! s" |8 o8 _, }assign axr1 = axr0;

5 D* y2 ]  ~: B" ]% B/ e
! O# v% }+ {3 G7 V$ @# a" Z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# ~2 `! L2 w, ~. B+ g! E* ^
static void McASPI2SConfigure(void)
5 K' h* W3 Y, Y6 b{  `: w& b5 o3 Z( W) J9 G9 L
McASPRxReset(SOC_MCASP_0_CTRL_REGS);6 k2 u$ ~3 f) p& h8 L: h6 l
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) W+ g. m1 Z6 i* Y% o
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);7 {- n8 s4 h3 {
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
3 q8 q7 g* h; }McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# B: |# J* j  ]0 o8 Z
MCASP_RX_MODE_DMA);
# W- o( Q" d0 L; r" V- ]3 ZMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 W: X* J% Y5 X* h( M6 zMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
+ G8 [% l: q- b1 ^: ^McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
8 N7 I2 S5 k1 J2 {/ iMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);. ~7 S2 n6 h! K! _
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 ^. T, {5 J1 z( ]
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
0 H& S0 H$ o3 I5 R1 _* E' iMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) ^( p( z" b8 U0 zMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 1 K& L- T; T. k$ Z/ H+ Z
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( R) H+ B) V! ]2 W
0x00, 0xFF);
/* configure the clock for transmitter */: `. V( ~8 O! w# Q/ S
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. \2 ]5 `) K/ P4 cMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
1 L5 D# b, n8 |5 A1 U. oMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
  K% y" r6 A4 q& H  e* a$ V0x00, 0xFF);4 s. X0 {  v6 L

( a8 L" F* B; o9 i' O/* Enable synchronization of RX and TX sections */ * Q# \% @2 x; E* d
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: d6 a% |% v. e5 d& I( jMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
( `4 P! k0 a' |6 X7 y6 E9 t- ^McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! T$ E- h' D' p6 Z. v( G6 K; q7 H** Set the serializers, Currently only one serializer is set as- y/ `/ O4 P, Z1 |
** transmitter and one serializer as receiver.! B& g* O* L0 Z9 U# D, ?, O) P
*/
- ]8 U8 ?) K; XMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 M# f; @. |( qMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 y, k2 N( ^# J
** Configure the McASP pins   }* f5 f" M; T; `0 L- C+ Q; _* R# c
** Input - Frame Sync, Clock and Serializer Rx, i+ O( x! D: f) y5 I9 I* R
** Output - Serializer Tx is connected to the input of the codec 6 r0 |+ @5 y  W% x7 r+ z+ z
*/
5 J& b5 ^. h) l/ KMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);5 T! u6 f! Y7 [) d( N$ m
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
4 I( [, ^' g- n" M4 oMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& E; O4 A( s! N9 p6 P
| MCASP_PIN_ACLKX
, h2 M3 k1 S6 m. V| MCASP_PIN_AHCLKX) H4 ?9 P0 o0 j% [, e
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) S/ ~! p; J! I9 F5 \) g9 |# m/ u
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ M( {. t/ V# v| MCASP_TX_CLKFAIL
9 ^4 m# N( R6 h& o, [2 y| MCASP_TX_SYNCERROR6 O3 F* h1 m) {! [# P% Y
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 {( y) o8 Z1 u9 S/ T8 q4 W" j7 Q# c
| MCASP_RX_CLKFAIL- l/ ]; g! ?' [* a
| MCASP_RX_SYNCERROR
- M, {! J( ~' L: y; m# n| MCASP_RX_OVERRUN);
- s: r4 Q/ a& s}
static void I2SDataTxRxActivate(void)( U3 H: A/ t. x5 b
{' r3 I% E' ~! s! x: r9 j7 M  u
/* Start the clocks */
" q! q0 ]5 Z/ l$ R) AMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
; q: l7 A$ S' _/ p! T- bMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 F1 f" H6 x' f0 _
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
/ O- B6 m. [% }+ K6 ]; PEDMA3_TRIG_MODE_EVENT);% |7 X2 |/ T4 E: O) s4 G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( J% t6 |2 j' _
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: H7 N. A+ e9 H* f, c! h6 ]
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 x+ L  o1 [1 v
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
( _; G) m) W  g1 `while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" p" N: w2 [3 V3 k" K3 C, i$ N
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);* ], ~4 V9 K. }
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
6 G2 Y" U# O6 E}

; x8 X$ X, P+ x: [1 ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( P% B3 c) i) P$ _# O- C2 j) A# _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-3 01:17 , Processed in 0.044670 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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