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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11841|回复: 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,/ E! Q7 U* _/ q" E6 e5 ~. S& K
input mcasp_ahclkx,6 \* p: B' Q  A0 M+ |
input mcasp_aclkx,; V3 `/ ?3 R# Y! H! h' P
input axr0,
4 P4 Q$ K9 J6 w
: d1 O7 w+ L7 K' i) loutput mcasp_afsr,% u" \+ D$ V; b/ V2 g
output mcasp_ahclkr,
- C9 o8 n4 d5 e2 R8 N  z" X( houtput mcasp_aclkr,, V% {4 E/ |! D, g: Z; V% a
output axr1,
, f& Q( ^- G* x& `
assign mcasp_afsr = mcasp_afsx;4 e: b) R6 a1 J6 k  m+ ^
assign mcasp_aclkr = mcasp_aclkx;, X6 M& V9 S9 h+ N; N% K2 @
assign mcasp_ahclkr = mcasp_ahclkx;
( \5 e/ C0 z* u& U& W& I# eassign axr1 = axr0;

" f( \% d2 Q8 z) K+ s' h: {' B: {* k5 ?9 N: w- J& h8 @
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

: M( R! ^& b( K- Z
static void McASPI2SConfigure(void)
3 W- U4 Z; W+ h- `9 [% G{/ @8 H: A6 V; J# D
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% {% m) D0 q" f2 ?0 Z+ z  p4 \3 eMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ o4 Y5 d/ @3 }- A* p
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
5 q7 P7 d/ \( x' r. uMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  c( _& U9 q* l. r& e! n
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& U* H/ q8 h5 C8 a% TMCASP_RX_MODE_DMA);% Q* t0 M; G  V9 _5 W
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& O2 q' G" z" k2 a% T" aMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! `4 Q2 l% E) @: E# s8 V
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 m+ Q# Y4 j7 K2 M* E2 s
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);3 z: K0 c* j* I( |8 e
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& v  a) i8 c/ P, l1 D9 MMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 E2 }" l+ a0 H) b1 \& v0 \McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, R4 K& z- f2 h: g2 S  @
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " {( d+ s9 f$ }% m! i
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. w, L* c; Y2 }/ a' T: `0x00, 0xFF);
/* configure the clock for transmitter */
% ?" [9 K; `, R8 }8 @McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
0 p2 \$ ~; X, f: Q; l" N& tMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
/ v8 f4 s  l9 z4 j% a( N. s/ `McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
0 G. d. M, @0 u6 X0x00, 0xFF);
# {: R( r% ^2 L& F4 _- H- ?' L0 e+ V2 q! Z
/* Enable synchronization of RX and TX sections */ + c; u; A" p; n# ]1 M) c9 \
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* a5 s5 L- _8 [3 K1 J, P4 TMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
- h3 i! K% T# i( s7 O! ?McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! I) {6 m* c5 R! b" l; ~5 S** Set the serializers, Currently only one serializer is set as% u$ y* c5 U9 Y. p% I
** transmitter and one serializer as receiver.
; N, S( E' F; j. f& I: V: q6 p*/
. l! N" X$ W3 [9 A6 T( ?6 cMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 ~  V' C( B; H: |$ k& [" Q# @9 H
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
2 N9 [0 ]& R* Y$ d3 G" q, c0 U0 c** Configure the McASP pins 0 _' p) M& R2 o4 @( o& z9 ]
** Input - Frame Sync, Clock and Serializer Rx
9 J$ j9 K' T5 S0 E2 b1 ^, P** Output - Serializer Tx is connected to the input of the codec
: p. ?4 u) ?, v) n7 ?# {7 [*/4 p  m: B% t5 V  ~: i8 p( F# W
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 ^+ n' q/ g! y6 E0 R
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' L2 E; h9 e" Z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX- E9 V( e6 G- W( W& T
| MCASP_PIN_ACLKX
9 c# b( \- j! x| MCASP_PIN_AHCLKX- x4 \: t. P- ~) H2 u4 `
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; n1 [1 \; b# h* _
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ; T$ d4 w1 C/ Q" ^- ?: ]/ K' }
| MCASP_TX_CLKFAIL 1 O+ K" K7 [% @" n0 s
| MCASP_TX_SYNCERROR
$ g8 b% M7 r6 n5 c+ q' P| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
; ]8 r# \. C  a) t# s| MCASP_RX_CLKFAIL
; [% e" c2 ]9 e5 F1 \3 F9 p| MCASP_RX_SYNCERROR 1 Y) P; k8 f' |% z1 U5 Z/ K
| MCASP_RX_OVERRUN);. G% d9 y2 K- a
}
static void I2SDataTxRxActivate(void)
) y+ r$ [3 P) |/ K{- y, G$ _- }% _4 c% s$ d
/* Start the clocks */4 p: m; l9 P9 A8 u. [4 H
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
! t7 w; P+ R% i& F/ ?( fMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
/ o9 q/ F( |7 b3 }0 @$ ^7 `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,% H+ B8 f4 t8 H) \
EDMA3_TRIG_MODE_EVENT);
4 {1 {) @$ V, n+ P7 X  bEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
6 @* g! Y6 C4 j+ [8 x4 Z' J; pEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) f! N" q$ Y% |- j/ V. y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, a' M+ C. C, lMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 W+ m1 a6 E" O( ?. j' w2 o, q
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */* U  y  |2 P: c6 D
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; D7 d5 u4 L7 P9 o4 UMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
9 V  D; [9 ^3 A! }* w}
/ y1 s* g/ |$ z( H- L# n' V2 q& A, y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
' V- L& z# W0 m6 D* S& g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-16 07:00 , Processed in 0.040340 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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