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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13075|回复: 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,
) O6 K8 h9 P9 q5 [# Vinput mcasp_ahclkx,/ q' G9 E; h8 Z2 X. |4 }+ Q
input mcasp_aclkx,+ E8 a5 N4 S9 A$ h! S- h
input axr0,: g' N$ B2 ~) s" X& _
. y+ O6 r% _2 b3 I
output mcasp_afsr,
% X' x& g+ @" ~# X7 Poutput mcasp_ahclkr,
, i1 P# |  G! B$ g( I" Houtput mcasp_aclkr,8 ?$ T# N" o1 V4 E% p# F" R
output axr1,
7 E- C- {- D( h! c$ a* @/ O
assign mcasp_afsr = mcasp_afsx;
4 {8 j$ r! M: ^  Y, V5 l- passign mcasp_aclkr = mcasp_aclkx;
. z- [( V0 ^5 d1 Xassign mcasp_ahclkr = mcasp_ahclkx;
2 K: F7 V$ O) t8 p* Z0 ~assign axr1 = axr0;
! J5 Q& E* ?. p5 I/ a$ {! V; p

# ?+ p! h. M* Z1 D) N9 ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ T0 v' y- Q2 p1 S
static void McASPI2SConfigure(void)
$ i5 U4 t4 C- T' s{
9 e* ?4 G% n) @6 p6 L& sMcASPRxReset(SOC_MCASP_0_CTRL_REGS);" |6 x2 ^( q3 k' L9 `9 ~% z, b
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer *// T1 @3 ]8 K" x) j+ Q4 ~
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 `" C' e: K" @; U% G' o! Q
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
, J/ w7 z( b0 R, N" N1 r7 s6 Q) fMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 N( k; M6 a! f0 \3 ]
MCASP_RX_MODE_DMA);) G# p0 G2 M4 ]4 B0 {5 r
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& a) j. e/ N* l6 |( d4 @5 ]
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */; H* m3 F% ]+ ?- }  W( q( D2 p
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- \0 X" Z! d1 P, C3 ^0 _MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 k/ b. M, P5 K+ RMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
) T9 z9 _. O/ s9 ZMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& r2 b* }( `1 }) ^* a$ l, n# G# l
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);  B6 R4 b. E) i, P# T0 G% X
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 }; \% a0 @" H" G9 a
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) w6 j. J, |; i0x00, 0xFF);
/* configure the clock for transmitter */
, v0 n8 u2 Y+ mMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);& W9 z6 K8 M. e1 T" |: F5 O; d3 `
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 7 A" R/ ]$ c& `2 |8 i! H( S
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) A9 \* O, M- t- T
0x00, 0xFF);
) ?0 k: R% }* j
3 e0 P- S  _& ?- O& z* s$ j/* Enable synchronization of RX and TX sections */ 5 e, R4 G' l5 v
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */0 W% H) g2 }# w+ s. [# W0 p
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);& d& M7 H2 {& t  J5 h9 O* t9 ^" _
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 M2 D( C0 L/ o6 M$ Q- a' R! T
** Set the serializers, Currently only one serializer is set as
) J1 R" ^+ g% d. R7 z** transmitter and one serializer as receiver.
) y6 a6 q- s# {/ b- D*/* f3 _% n  f. P3 f* [, W, v& u' `+ g
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);8 o0 B" }2 k/ }0 g) \0 y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# Y' t$ E% l/ C** Configure the McASP pins
- d- e. f" V. d! e, P2 x; d3 ?6 f** Input - Frame Sync, Clock and Serializer Rx$ F) i- ~; ^$ l. {
** Output - Serializer Tx is connected to the input of the codec
7 W" `2 x3 _  ~/ J1 E*/
6 d2 B0 J1 X# l  g/ }& B# YMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ w2 J4 G" t" q5 LMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));- p% Y0 ^" P' i
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX. \* @- I% @. p
| MCASP_PIN_ACLKX
& |. O4 j% J/ d9 y& g( F| MCASP_PIN_AHCLKX* X& W1 u; p& f8 a5 R
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& H  d1 L0 m2 ?/ C1 sMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 w* g  X! f* {
| MCASP_TX_CLKFAIL
  X( y" v1 l. q$ R5 G| MCASP_TX_SYNCERROR9 l; y5 L' k9 [5 l& u5 x
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 9 H8 t3 f$ h& s: v) p
| MCASP_RX_CLKFAIL
5 s0 }1 y2 H( n7 |$ f5 ~| MCASP_RX_SYNCERROR
. r. m* _* a# b1 d( V0 K2 I" || MCASP_RX_OVERRUN);+ ~9 W" C/ \$ Z, W( Z" P: V
}
static void I2SDataTxRxActivate(void)
6 g$ U9 w+ o& M! ]$ B: H2 {  K{
0 k& Z4 d- [/ n  f( E7 m/* Start the clocks */) f5 h. \, }" _
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 o2 b2 h: M! kMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; q5 u" k: W# ?* F/ g0 I1 hEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,( g! V( e$ e. E, U6 ?( `
EDMA3_TRIG_MODE_EVENT);
. V& Y) J5 N' L1 |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, % l. L5 `* W9 ?2 D2 q
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
$ H2 l5 M8 a+ h9 [$ I- {McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 [. h( N- U8 E2 k( `9 wMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */" v8 I. J/ z* b. Y
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 R7 {" d, t6 B) `& x) FMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. A6 i& V% s. I& @McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: z' Y! o8 W) X# q. b0 v}

8 Z4 N6 c' y  B
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( F+ S- m: Q4 e8 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-18 20:42 , Processed in 0.038792 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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