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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
2 W" R" d1 ?# Q# J, k& pinput mcasp_ahclkx,- I& a) B1 t& j( |4 h* ~
input mcasp_aclkx,9 T3 D! J( N- L9 d6 D- O2 D
input axr0,
2 S( W4 Q& b3 i, g, C
; ^* J# }5 w- Coutput mcasp_afsr,! {( m/ y3 a& @3 J6 l
output mcasp_ahclkr,
+ B+ T8 s4 d+ w# d( a$ Houtput mcasp_aclkr,% V2 K) `3 O3 B$ U6 ^/ k
output axr1,, b/ S9 }4 N' Q5 j) P
assign mcasp_afsr = mcasp_afsx;
- |; V3 v5 N$ I+ L% S0 Gassign mcasp_aclkr = mcasp_aclkx;1 Y/ ?% r; D" V( R
assign mcasp_ahclkr = mcasp_ahclkx;; q$ x/ {2 N5 d2 _0 G
assign axr1 = axr0;
% b& I3 d3 W% I! t$ ?/ S) ]/ `
+ @7 ?( z2 t4 |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
, v% U9 q% A, n, a
static void McASPI2SConfigure(void)
( Z; I0 Z* {5 M7 L. f& Z{% R+ X% J. u) f; ?! O
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
- q. M7 \0 m, l/ i8 wMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 ]8 A# t; U  M( ~, {% A" G! D5 XMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
: @1 M) k, H) C# d/ ]' s& \, n/ A% k( nMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */" X- F6 q) B8 m' |
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 v3 ~7 N3 C9 V8 q' W$ PMCASP_RX_MODE_DMA);
0 g, V, r! E! r( _  QMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" E& Z5 R( k# yMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
5 \  h% U. [( \3 l& e+ G7 sMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 ?4 u+ `% |# w( s+ n: X. N2 ?
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);' h% K. ]  K" G3 J+ q' l% R( D. _
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 s2 T+ V+ V5 j3 W- X. M' {  O1 y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ w. C( J) D) C6 ?
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
; k' A: F3 a" a# D) _* EMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
4 g" y3 W+ C: uMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 z( j9 \$ G( V/ {4 y0x00, 0xFF);
/* configure the clock for transmitter */) r& ~$ G8 H5 k  S: e# r9 {6 l
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% A" T# |  F$ FMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 9 H2 W# f* R- ~, V+ H
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,7 `# \% w1 y9 ]# b6 M, m
0x00, 0xFF);2 N# r5 l7 J: o) r! z' i2 b
$ g1 ~+ m: M1 R8 z
/* Enable synchronization of RX and TX sections */
) u  ?, o' J) KMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
0 d, T0 i0 s9 ?! |1 kMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 l# P; H* n3 P# ^4 Y1 SMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*/ h. v- S" g# m0 r
** Set the serializers, Currently only one serializer is set as# U/ w* X" `  ?, G0 G# V7 B
** transmitter and one serializer as receiver.
2 f* r7 }  j" {) D. }*/
. l0 y! K% L5 B! B- R& z$ ]( rMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 D; h& x3 Y4 X; XMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) [, }( K* g, H9 K7 ~5 g** Configure the McASP pins
/ H8 s: N+ f3 P6 ~** Input - Frame Sync, Clock and Serializer Rx
: K' K- H3 ]/ P6 w" ~( Q+ Z# M** Output - Serializer Tx is connected to the input of the codec 1 B6 B  {4 f3 f  V) q/ ], i
*/0 L: R- u" `4 K& h
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);& I; A! @+ h& d: p4 h
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! k5 X3 Q' f) G- w: s
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 K( y' p; @. _* I. H  o$ || MCASP_PIN_ACLKX( a" o* u  u- g. L, w% ]
| MCASP_PIN_AHCLKX
+ E2 I: M/ a6 b# Y+ w0 P| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; s& r4 f* w2 ?- @
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 4 i6 `+ c2 j, K2 N$ C- R; b
| MCASP_TX_CLKFAIL
$ ^/ Y- C. ^# W4 N1 U% d| MCASP_TX_SYNCERROR+ h' E/ l; H  n! `" O# f1 U" H
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( N5 V5 c& t; f
| MCASP_RX_CLKFAIL  \; c7 z, S' W$ _. R2 h  a
| MCASP_RX_SYNCERROR 7 ?/ o% V5 n/ C3 J" O2 L
| MCASP_RX_OVERRUN);
" h* p" h. B0 n- r7 |# `) o}
static void I2SDataTxRxActivate(void)7 R: W  Y- E$ f2 B
{- Q5 p6 N& Y( D) M
/* Start the clocks */2 |4 q4 D3 i- }. F% _5 M. R
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
  \7 h" h) I+ h0 r1 V: t) d$ b  E$ fMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 D6 }4 e) o8 F+ X& |3 Z; F
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 [, y) m& D5 k1 e8 p; s2 _
EDMA3_TRIG_MODE_EVENT);
: B$ u/ F- `/ o+ g% t3 TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 @- S. g* O* c/ G, l+ F' i4 vEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* S( I. @, L- h! Z, Y+ x5 {6 `) IMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);8 H) o  v. n8 p! ^
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) T$ n4 j) K- t: F! gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' A9 J! l* ?6 D) Q; F4 f0 ^- VMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);; W  T9 y7 y, ~# `4 I0 L/ U
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
) a! {- D2 o! d% T" @' Z1 h}
/ \9 E: i( D' G# S( F) ~# ]
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# L6 Z# y' J: ]# y6 \" {4 P/ W$ G/ c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-16 10:18 , Processed in 0.039650 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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