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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13128|回复: 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,- f4 l: d2 w/ |1 k0 J: @
input mcasp_ahclkx,
/ C* f1 B1 u  C/ _- Xinput mcasp_aclkx,( i; Y+ c3 H" A! N- K& |5 r5 O7 H
input axr0,
3 \) j9 k& W  T3 k% [8 ~* e: ?) k+ T$ O
output mcasp_afsr,
- s3 n7 ~3 h0 N+ `; \output mcasp_ahclkr,3 D  w+ S0 ^" }3 N$ P1 y
output mcasp_aclkr,, ~& T$ W9 Y: g9 h
output axr1,* s( O3 }1 H% U
assign mcasp_afsr = mcasp_afsx;/ \5 O% _- P3 D' d7 Y
assign mcasp_aclkr = mcasp_aclkx;/ Q: O. ?, \, G0 C8 p
assign mcasp_ahclkr = mcasp_ahclkx;
* h8 z2 O9 |/ ^) a* W2 v/ cassign axr1 = axr0;
1 V/ F' O% D. q- L
4 _3 W( _- H0 J7 c6 |1 |# G* E# \5 B
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

' d7 x2 A8 s% R. T% {4 {2 r- q
static void McASPI2SConfigure(void)6 @6 K! Q7 E  F7 T6 u# r
{) m: b! g7 N' u7 J
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
/ v4 f2 E, A2 KMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
6 @' F) P5 S' W5 o/ C  GMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" B& D% R2 K; e- S# w8 ?6 D2 E* \McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) b) c2 }& ^# Q4 jMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- h- |( F% p0 W  B
MCASP_RX_MODE_DMA);3 Z. ~9 w% p; C/ T; B- R+ K
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 W/ ?* n- R9 ]( E3 {# S; NMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
! E6 F: A) U* X  DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 6 [) D0 M" J" m9 {' A
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);% F2 \* P$ k4 D9 u  [" J4 ~& Q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
4 \; t4 c* x( F2 N; mMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
9 o3 e5 c" B. N% ^McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 g  z( ^( X0 C4 o+ N
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
* n" j/ r( {, |, AMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ b- D1 I1 Q- v0 R, X# i
0x00, 0xFF);
/* configure the clock for transmitter */
7 T  O  e% c- p4 N) O  zMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% y0 }+ S* M" k9 {McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. v& m6 G- F; MMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- R, p1 h5 L7 g! _. d& B9 w
0x00, 0xFF);6 I3 |+ A" Q2 ~) K
* W$ n- U: [! u8 C
/* Enable synchronization of RX and TX sections */ 1 y7 {/ B4 e2 C
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 n8 W! D+ p2 D1 h
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; g% j) ]) m: q- `$ k( }. CMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*, k' Y* |9 e3 D; `
** Set the serializers, Currently only one serializer is set as
! d/ U! x) K* g: Q$ b6 z** transmitter and one serializer as receiver.
5 _9 L5 O& }# }7 N5 U*/
# b2 [6 v( m( D5 u8 y# l1 jMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);- ~. F0 _% [# g/ q" S: y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
- N  t/ w* C: q7 f4 m. }( j** Configure the McASP pins / S4 i1 r5 h) S7 Z" U$ }
** Input - Frame Sync, Clock and Serializer Rx
- |# m% h- n- c+ g** Output - Serializer Tx is connected to the input of the codec
, [' `& K/ x0 k' S: ~9 |*/
3 n  d4 d& b* K, m5 {1 P3 P: pMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ C$ F/ T( F0 C- y$ N  J) j) P" IMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));1 K+ }% X: A! p+ \" N& c
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& I$ J% D, \  V$ v( \| MCASP_PIN_ACLKX
( o1 ~( p/ }/ x; \- w" d) A| MCASP_PIN_AHCLKX
) C( S0 h5 d; L$ Z1 C0 K& s8 @| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
- k: x$ S6 ^" z+ x4 o; @$ zMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
) u# y  {* _, Q" R% }' _; O| MCASP_TX_CLKFAIL # b7 v2 |6 c  F- E) s/ r! M
| MCASP_TX_SYNCERROR
# ?" j. x, w) l% T# r| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 Z6 T( }" m9 f0 i/ _# c+ A1 \; \2 K
| MCASP_RX_CLKFAIL7 W3 c9 G; b6 p" [% D
| MCASP_RX_SYNCERROR % M( B% i; e5 @' U" P" U6 G
| MCASP_RX_OVERRUN);7 I7 O2 V0 C1 H) J
}
static void I2SDataTxRxActivate(void)  g/ d9 v- U$ N$ e* o6 v8 A" h# u
{* t: g; X1 j" R
/* Start the clocks */) H. t* \+ m5 G0 O* }3 [! }4 S
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, b6 A% C6 G; [9 x; ~' a( CMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */" F% K, X9 G9 j$ ?7 K+ v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,' s2 Q6 Q/ P8 N3 ^
EDMA3_TRIG_MODE_EVENT);
+ s4 e! f8 G  a  j, AEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : V9 S9 e7 K" U2 O* x$ F5 V
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */1 B( I5 f- `5 U% F1 ^
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
- w: F! s  D( f/ O! D- XMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */- H, Z& H! h$ t' `# h
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */- J. t' G' k) z/ r5 p
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' I9 y6 g; ^: o8 R9 f- M; T" W
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
- r1 U. H& L0 t5 X# z+ i  }}
7 w) {# n9 V0 q: e6 k. T0 j4 p9 |  f
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, F: y9 K9 O- o& s. O: C! S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-29 17:14 , Processed in 0.042754 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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