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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11201|回复: 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,% z, s' q0 j& }1 |1 ?
input mcasp_ahclkx,
! F8 v/ W5 \/ {1 X; einput mcasp_aclkx,
( Z- V5 r; ]% Q% g8 dinput axr0,
! y5 l# N: g; }& ]! @" e! H  j/ ]  T) J& C! @9 J
output mcasp_afsr,
) @2 _" N1 L7 F/ a- Toutput mcasp_ahclkr,* P, [% h+ Y2 y
output mcasp_aclkr,
4 J( T- S+ @/ `  N) noutput axr1,* x! g" T: }9 z* y
assign mcasp_afsr = mcasp_afsx;
! H) d' [, Z* q/ T; _( @' F8 Hassign mcasp_aclkr = mcasp_aclkx;
) \* b0 }: V  f1 dassign mcasp_ahclkr = mcasp_ahclkx;/ c1 ~. C) ~0 H5 P
assign axr1 = axr0;

& x7 F! t* ~7 N) i
& Q! w/ B* F* u2 i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
8 [) c/ F4 c& I1 L, C2 {* j9 _/ e; _
static void McASPI2SConfigure(void)3 C. ~2 Z: {. w; G0 B) V+ A
{
3 f' ~) V/ s. E; k# vMcASPRxReset(SOC_MCASP_0_CTRL_REGS);- i+ ]: k3 D, Q, s1 l3 X
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
* [* C3 N# u, v' e: \. qMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& G" _# s$ S1 A2 F5 {' |
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) ?) _5 ^6 t+ }; U0 C& uMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 O3 r$ m& A7 s. F6 ^0 WMCASP_RX_MODE_DMA);! `: v2 E) R# q$ Y- C* E
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 ^: J* _2 z, i
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
% P' R! e$ M: _- _: KMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, & H6 H* K8 Z$ R7 {
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);# J" N0 O$ y3 B8 B# E) K
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
9 ]! Z" ~( h& H  ~( A4 gMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* g, \; `& U6 A% q
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);! _- x0 T4 s) E; o" X% j, m
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" D* n( \6 q$ V$ f; ZMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,+ J3 o9 k5 j6 L& s. C7 c
0x00, 0xFF);
/* configure the clock for transmitter */, G, Q. H5 w- C
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
$ e; n$ N+ t2 A, |7 J; \McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) [+ K7 J$ O0 ^' Z6 _- O- u* EMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,% S, F6 h9 G- D! a+ {
0x00, 0xFF);% J  P- c8 d) e, [

0 z9 ?$ z- f4 ]) X1 u/* Enable synchronization of RX and TX sections */ ) p4 q) Q3 _. u
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */' R* D8 n" O& i. |6 Z) }$ g
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 B) y4 f) J6 |5 H4 s! I
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% s" \8 H8 O  x9 {3 D** Set the serializers, Currently only one serializer is set as4 m' Z% A) S4 }8 l; n' k
** transmitter and one serializer as receiver.: y- \& Q0 L+ q+ m/ Z+ h7 w' C
*/
: V" x( A! z- kMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& E- n  ^! R7 `  g0 |7 P
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/** _* r  d0 V) x
** Configure the McASP pins
( ^8 ]8 x+ U4 j3 q** Input - Frame Sync, Clock and Serializer Rx  a+ B$ l4 n2 \
** Output - Serializer Tx is connected to the input of the codec " Y1 v' t& p; [% m
*/- {% M! c: m7 t
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 q: _4 u; @& [( L0 N( F
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& V6 ?8 f) b- K$ E- m& n
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 [' [! M3 w- g9 I, E& I
| MCASP_PIN_ACLKX
5 C+ n5 R' }+ F" C8 {| MCASP_PIN_AHCLKX
& G0 @+ a8 Y4 b. B/ d2 Q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% T, K2 T1 w! S: e  {  t3 c
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
) T% g) y* q4 ]5 z" g0 |- t1 Z| MCASP_TX_CLKFAIL
9 B; w( R* B0 u+ p- X; n/ X| MCASP_TX_SYNCERROR
3 t* a+ L* i4 p' }, a1 ]7 b| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR * q. B. |5 `. T5 x( I& q
| MCASP_RX_CLKFAIL7 U( g% m- O/ ]% `1 X
| MCASP_RX_SYNCERROR # ]- }5 a$ T# G% F7 ?( T
| MCASP_RX_OVERRUN);
6 C' a7 P( i2 @3 S5 l1 J}
static void I2SDataTxRxActivate(void)
! z) j6 ~# h+ \, @0 Z, n1 L{/ M8 f) S0 _7 i
/* Start the clocks */* y2 j+ A% D# i9 V  ~, c
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
7 @5 I) i# l. v4 m) yMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 p! _) l; @7 d
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
* {( z& }3 x0 `) b) ?: bEDMA3_TRIG_MODE_EVENT);# L6 e/ p. |% r* u2 _6 A3 w( s
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) h( N; s% Z# G5 C: S; M
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
/ F( a5 y/ }5 O/ aMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ t( ~3 `3 `/ t0 n0 V5 r% R& t
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
; Z/ ?- A. x! |! k+ s3 i. g5 ~! twhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
  F3 |$ T( A' D5 [McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. E) Q3 ~2 I5 D5 nMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& j4 Q, d# o/ |/ H* w+ v! Y$ Q}
; V. X0 |" G0 M: `: p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) [$ k- ^- E3 e3 A) Q9 \  z4 c  ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 01:52 , Processed in 0.040521 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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