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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13380|回复: 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,
8 Z) ]7 {9 O( Z& g- iinput mcasp_ahclkx,
8 i  K- F! e3 ~input mcasp_aclkx,
8 M8 h- W/ H" Z. {input axr0,
$ t. \4 v) L. x- w9 R) e# @. M& q0 {& u3 ^1 p
output mcasp_afsr,
$ N; F9 K2 o6 f- t! J1 Zoutput mcasp_ahclkr,
2 s, b* k% F7 C# Y- v5 Moutput mcasp_aclkr,0 \9 m& e" `) L7 a' D- i! Q
output axr1,  k8 B& ?, `" m" Q& Y2 p0 K6 g
assign mcasp_afsr = mcasp_afsx;2 v- T( a9 h6 r7 R6 k% H% F3 ]1 k/ V6 Q
assign mcasp_aclkr = mcasp_aclkx;3 |/ y5 h% E# d* N& x
assign mcasp_ahclkr = mcasp_ahclkx;
& x. ?" _. {) T+ @assign axr1 = axr0;
7 F+ K' d8 j5 U( r
  W: [6 v1 v% E1 n: f$ O) v% E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; {3 O- z4 J; \$ a: ^7 w$ a
static void McASPI2SConfigure(void)9 x. Q5 w- F$ p6 O- m' J
{( @. t* y: k0 D1 G
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ j) n) b5 d) i: k9 c% CMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ r! s2 x' ]& x
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. s3 K. o+ s+ q% v& w3 ?McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
& @- e! s% Z$ f7 IMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. D* Z2 S1 P: d+ }. }" kMCASP_RX_MODE_DMA);4 H* H- b- R0 g  u& I
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," r: A( ]  n' c% x# b
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
1 a) W1 B4 D% R* IMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- A0 j: _; J( A0 y" \, j6 v  x: RMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);5 f7 h  W& h6 `; f, B1 D0 |8 I$ o
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, # h' M, M  u. s6 t0 w
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
, T' R, f( Z# J* ?& l$ E/ {6 IMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* O  ]& [. f( @' h* b( P
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ }0 y  B5 q: f* }McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," r5 Z( ?* I% }' e( p  L
0x00, 0xFF);
/* configure the clock for transmitter */
, g& n, C; t% IMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* `7 w6 U1 Y  L
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 O. O# U; t3 b0 P4 ~
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) s$ i! |4 Y& V* v- [6 W8 @; g/ }0x00, 0xFF);
; `. l4 \8 l6 y. N9 h4 \
* I( T  s( U# U( Z1 w4 U1 K  Z/* Enable synchronization of RX and TX sections */
# k- j9 [) p' ~8 l' ?( VMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: ^& m" c+ c. m3 D* ~" Q# fMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
0 a. }) e. d) w0 T$ `0 p" \McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. P% z, [+ I0 v# F3 P7 C) A
** Set the serializers, Currently only one serializer is set as% J; M% I! g. h2 G
** transmitter and one serializer as receiver./ Z( r! O9 P8 U4 {, T( `
*/# M+ {- V5 d  x4 R) {( V! I* [
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);, y" c, E* S0 h  h
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*( C. B" P5 D- o9 U+ X4 W
** Configure the McASP pins / k* \# N; a& ?7 [5 `4 u; x$ h
** Input - Frame Sync, Clock and Serializer Rx0 s- I& q! P: ^5 g+ g: ]1 E
** Output - Serializer Tx is connected to the input of the codec * t9 W: W1 @1 `+ G! h* @0 t
*/
: J  Q0 h" j- E$ ^& PMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: q; k4 A- j2 W
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) n% Q! j5 t" H9 j$ R; Z! s
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 }2 R% y  b& A; y9 M: g1 x( x$ }
| MCASP_PIN_ACLKX% |; u. Q; B' Y+ Q
| MCASP_PIN_AHCLKX6 Z8 q, o( ?) C* o& X
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
8 ~/ u% W0 O0 Y. `McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
4 D) G# E+ f! q+ o* }3 S7 f* U0 `| MCASP_TX_CLKFAIL
4 ]9 g% u( k( m# s2 A) || MCASP_TX_SYNCERROR
* R4 ]; s$ L0 o( p' `: @| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . t/ ]/ o7 g* T' o
| MCASP_RX_CLKFAIL
" T! g" U3 B! w/ b7 q8 a; ~/ _& q| MCASP_RX_SYNCERROR
- Y% r* t4 }  ^& f4 j| MCASP_RX_OVERRUN);) I9 L3 F- s+ w8 P
}
static void I2SDataTxRxActivate(void)7 C9 E) \$ a" |" u) \# ?) H
{2 J9 K  v, s' E! v- P% |/ G
/* Start the clocks */
$ ^7 q3 W5 |  ]3 v$ U# g9 r3 OMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 w* X! m& }/ z$ D3 z( x& F. _McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; A. z( J4 E0 I3 p% CEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,: P/ [' v2 k, z7 F) X" [
EDMA3_TRIG_MODE_EVENT);0 B! }. w6 A0 P' t
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) `' s$ g8 p) H& z. o
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */- y$ d+ }: w5 \1 H4 ?" I
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 D6 F! r* N( j: ]$ T
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
( |' e" d" g. Wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% E, h! g* |+ P2 A' @2 OMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);" F; W) V. I) @
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 q' w$ F, D: r4 r
}

$ k4 M) e8 \. U9 T  _" L- Y' j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' M. W) j( k/ N  Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-12 00:31 , Processed in 0.043607 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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