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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1210

积分

金牌会员

Rank: 6Rank: 6

积分
1210
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
; L8 o# P0 Y: ^7 z# t% Rinput mcasp_ahclkx,
9 @$ u& q- _" d# u; T; X, kinput mcasp_aclkx,
1 b! [' G  d0 B1 _& j- K, \input axr0,; h# O% {# y/ J, X$ a1 T
3 g3 Y0 Q8 P/ s+ |9 X! l9 |, X3 c
output mcasp_afsr,+ j2 j# {7 q* B7 L7 E  G- f
output mcasp_ahclkr,
. a4 V: g. S7 ?' u; houtput mcasp_aclkr,
/ G' S, F3 P  n+ u, _8 moutput axr1,, p# |1 @- Q3 ]+ k: e# s" p! m
assign mcasp_afsr = mcasp_afsx;
" W+ Q+ \) ?+ @& ^% W4 {( T- Xassign mcasp_aclkr = mcasp_aclkx;! f# S: m. t, O  C- ^1 @
assign mcasp_ahclkr = mcasp_ahclkx;) W  Y# s+ K6 D: U7 h% u
assign axr1 = axr0;

/ m8 d$ i- k+ W$ L. m
5 L6 c4 I1 r7 u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 L4 }6 d: ]+ k3 n( |% N+ V
static void McASPI2SConfigure(void)& [- P% j: [0 x
{
" Z9 V' d, I: fMcASPRxReset(SOC_MCASP_0_CTRL_REGS);, T6 w* \: [7 q" T! G
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 B7 U- |; J9 M0 @  q$ I* f) gMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 ?% U! ?" k- F$ m
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
6 v5 j0 ^, e' Y1 S9 y3 z  r9 ZMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- H& |- p7 e& u7 M. ?! ~( G# p
MCASP_RX_MODE_DMA);2 N3 g1 }, G  L# O2 n  r: h
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- w0 |7 h( J0 L' z4 z$ q, kMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# T$ Q* b: m& Y9 A& z% bMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' z, ~3 u. y1 a4 t# bMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" {; ?( Q$ x$ |; U) x; J: `McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / f. X$ w- D3 x4 t
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 _& [2 }, q" K- P% S# m' G
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ W4 ]# \& p$ b, N6 C  c5 f5 Z
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. q: K9 ^* c* q1 [McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
3 v( I: j: ?# L0x00, 0xFF);
/* configure the clock for transmitter */! f" o% ?% G5 o) T8 B" u! y( u
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);2 T- q2 u$ Z+ C$ W1 u
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
0 r3 i+ v% b% D/ M6 h# AMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! J* y5 A2 Q  M1 j5 g
0x00, 0xFF);9 q: e# h. }- m7 e9 ~6 A$ {

, f8 ~  G! g% Y7 t7 Y/* Enable synchronization of RX and TX sections */
, K3 H# P& i  k3 _3 o2 z- gMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */5 H& x0 u* ?/ v) a$ T+ p( Q
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' t8 f6 e, [3 H' S
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
/ p: b, y2 I7 |* e** Set the serializers, Currently only one serializer is set as
* ?" N( f& l0 x* j( n. l+ ]# x+ T** transmitter and one serializer as receiver.
5 I# a" A( H& }7 ^2 I& [*/
  U9 C5 u: C; u6 Y0 ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);; a& [4 L, [* v9 y* n  o
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
5 q, i  u, ~' V7 f/ ~( F+ g** Configure the McASP pins
2 Z; `% @+ L$ Z: ]: }% N** Input - Frame Sync, Clock and Serializer Rx5 J$ z- f. V% O2 R5 _) z- L) E
** Output - Serializer Tx is connected to the input of the codec , p- ]' l! @' ^$ ^2 Z
*/
1 X& z; z, W) q4 pMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
: U! V$ m" M1 i! k, D4 o! xMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
& g  Y% S+ ^+ d7 k$ J/ |+ v. AMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  s' ^, G! k# ~% Q( ~% X4 w0 X/ U| MCASP_PIN_ACLKX
  y: R5 X3 T. d" B( y" s) || MCASP_PIN_AHCLKX, G& C2 M- ~/ r7 ?7 o8 i0 O
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ ]; o" ?0 v8 k' g* [6 g( d
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
" }1 K, S7 B! v! p2 _: J( b- D| MCASP_TX_CLKFAIL , A5 k: s& @  t! ]
| MCASP_TX_SYNCERROR( [  t4 l& p( T- }: y
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
5 E  i7 v- f) n6 F, }, `  n, i| MCASP_RX_CLKFAIL
% i/ L# z1 ^% W. ?+ H& b( S| MCASP_RX_SYNCERROR
% p! x4 e% G2 ]/ V  k6 t| MCASP_RX_OVERRUN);
  @5 b  ?. l  v' T$ T}
static void I2SDataTxRxActivate(void)6 R7 }2 n- u! T) F* f3 `
{7 X% F" y. b$ K0 j* p* p
/* Start the clocks */
% |- D5 ]2 ]" D2 ]$ C, KMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
$ }! {1 J8 y! L8 ]McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
, k0 L$ h/ Q) `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  ]0 d; Q: H2 e. P
EDMA3_TRIG_MODE_EVENT);$ A. ]- ]+ Z  H, m# k
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * K; Y: n) {4 d( h. U
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) S' o1 [( n! x, h4 G& R, sMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);/ Y5 b7 ]5 ?: ^& a4 B& k
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  C! b7 |7 M6 s0 q& M9 Kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */  I+ _& U+ r& u" M+ I
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);" @( s% w% Y% T1 p$ C
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
; D3 m& F3 R/ P}
) L) _. w* j& v. @) M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

/ y6 Z7 o8 r2 s" ?4 s7 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-15 20:36 , Processed in 0.036858 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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