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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
) p3 v. j2 }2 T5 U: Z9 tinput mcasp_ahclkx,
# ]5 U9 _1 z- u0 Ninput mcasp_aclkx,2 u2 g) I0 u" P; _4 G5 s
input axr0,
3 Q5 y- D2 L3 _4 G; B+ c& v- u, W# p) ]; `) z6 n
output mcasp_afsr,
) P* C+ D3 _& X' L3 i1 e" Noutput mcasp_ahclkr,
) ^; I! G' d* Boutput mcasp_aclkr,' u% Y- [. S% O3 K& s
output axr1,
5 `( l; c& U9 W- ?5 E  a
assign mcasp_afsr = mcasp_afsx;
- Q* T& x" x6 K, [8 g( Massign mcasp_aclkr = mcasp_aclkx;$ K7 }+ [5 N$ {0 l( [$ }. m+ N
assign mcasp_ahclkr = mcasp_ahclkx;, c, N* {6 |7 T0 g% j$ J' o* B
assign axr1 = axr0;
# E9 p  w! H. _2 U; W7 a
7 I; l2 a5 k! ], T# [, c& R
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ k% W* z" X4 }6 L; o% \
static void McASPI2SConfigure(void)
$ K7 o% C4 O+ V/ c{; J/ }2 K7 F) J' N& v' F, X; a
McASPRxReset(SOC_MCASP_0_CTRL_REGS);$ ?2 I3 @* w2 ?0 z. X( g; f& H
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */3 s0 |8 F$ l1 j
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);+ E8 Q# n3 b# q2 C/ ]
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. i4 M& c5 w( o4 M2 \& V( L9 PMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 _5 X5 Y# B  V% A
MCASP_RX_MODE_DMA);
  \) {; _  q. x6 H6 hMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 i* J/ W. ^- D  E$ k: D* G; f' H
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ g6 G" m5 _4 X  ~McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 l, n3 h; p; X
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ ?: u4 g+ g# {" [, C5 h" l
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 A2 s, y# }6 O9 I' \# G
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& I0 E- V, {5 V' {, k6 R0 ?
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);  A7 E9 X& ^5 c0 X) o5 f
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 ?1 D1 O5 C1 B8 @& wMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
' m/ f: o% t6 u- @+ s1 h0x00, 0xFF);
/* configure the clock for transmitter */4 F, H2 S- f5 K# P9 }: k
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; o4 M) \) e; a+ `9 bMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); . _: l9 e; p1 M- r
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
/ E* g$ U3 o! Y' m7 [9 A* e0x00, 0xFF);
1 l2 m  K3 p- k8 p7 d, E* R7 P4 E# W8 ]
/* Enable synchronization of RX and TX sections */ ) g, h+ `/ p5 A7 I6 U) @
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& p& Q) z, E0 p# [/ c1 g
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);% Q) E6 N. L; o
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 Z$ T. E0 w& B5 y7 n: ?5 z& S7 a8 U
** Set the serializers, Currently only one serializer is set as8 c, z0 Z8 Z, v/ S8 y5 M
** transmitter and one serializer as receiver.
/ e* |7 u0 \0 G+ P* X*/
1 H3 m% D) t4 B5 P" BMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 Y/ M. `& v3 \# \
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& ?* n* t, T  m
** Configure the McASP pins 1 U/ K: q1 G% }$ f8 f
** Input - Frame Sync, Clock and Serializer Rx
7 }; U0 K8 H5 a: J5 a2 x+ a** Output - Serializer Tx is connected to the input of the codec
7 k) j2 a: x" E/ c; _2 c8 j*/7 v9 p& }6 J) {% K- M/ R
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
; z( s" \7 x1 V, G3 HMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));3 T/ R0 `. r" s; L# ?; g6 e
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
1 Y. B( M) X* i, |5 H| MCASP_PIN_ACLKX
) i4 U. j( C' I) f: h| MCASP_PIN_AHCLKX
) P8 z' W) \8 E| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */8 `4 j5 \0 t5 n7 Q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - s" w0 f& U% K" t! K( T. v2 h
| MCASP_TX_CLKFAIL % F4 F% I8 F8 R% Z& z% F
| MCASP_TX_SYNCERROR1 S! H: y3 c9 Y: Z. `" Q. k
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 C) x( m" n8 K# m0 Z$ H/ w/ Z| MCASP_RX_CLKFAIL
5 ]& `$ c! i! k7 @; H/ M| MCASP_RX_SYNCERROR . `( Y2 X3 V1 X+ T; D2 ^
| MCASP_RX_OVERRUN);
+ {) I$ z, k% B+ K8 @+ o! B1 a2 b% q}
static void I2SDataTxRxActivate(void)! j# Y9 D. [* f" k0 _5 O% d8 b- A5 O
{
& M9 e4 w( ~, F. H6 `; h/* Start the clocks */: q; s0 i% N' V) [9 m6 P9 s4 _2 e
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);8 W0 c! B' I9 A( c- R. R$ x$ A
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! ~9 Y: D/ s8 X& W& ]5 g) r5 yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 I4 a0 D% m, \) [
EDMA3_TRIG_MODE_EVENT);
/ \0 T6 Z2 ]/ Y" E. P/ D( CEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & J$ q$ o5 |2 p. Q- `  n9 ^2 d
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
7 b) d' {5 }( P3 U- iMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);9 q) o' \% A" V$ g; [5 |& v6 i
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' x9 D1 `; _  f* o- }. o
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* R6 _6 @7 I0 q! o$ pMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
/ [4 |; l0 Q8 `7 hMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( Q  U. B/ r: T( a# r8 v}
3 P2 o% r( s# b- P
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& I, v( ]" q8 g7 w) b( ]8 ]3 N( [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-31 04:52 , Processed in 0.037531 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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