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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,$ I! n2 v6 {1 @4 b0 t' u- _
input mcasp_ahclkx," [; z" e% H, G# k: g- a) y' I
input mcasp_aclkx,
- G: D6 T6 g6 Sinput axr0,
% a2 P: I8 V+ ~, o$ s" ?% s1 ^- I: ^+ {
output mcasp_afsr,8 ?3 r! s/ y8 Y
output mcasp_ahclkr,4 Z7 h+ p! K& n( {9 I
output mcasp_aclkr,
( g0 ^6 I0 h; I, g. f9 q, M0 qoutput axr1,
) k* n* {& B" R4 x/ v& m
assign mcasp_afsr = mcasp_afsx;: Z* q6 D1 L# q; o6 g
assign mcasp_aclkr = mcasp_aclkx;
2 g# ?' L6 c/ d7 Gassign mcasp_ahclkr = mcasp_ahclkx;
' V$ C6 g$ D& t4 h0 @; H8 Iassign axr1 = axr0;
: ~) G7 ?) h+ K$ M% D

6 R  a3 H5 g/ z3 C) m4 p" H
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# _. s  e7 K8 S/ P# `8 N4 g3 W% H
static void McASPI2SConfigure(void)
* A* H/ \* F- Y8 j- r{
5 w, V$ L$ m& fMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
* ~# e5 B# E# ^* @- }6 gMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
" V) |, q! S/ v% Q! |2 ]McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! g. X8 f) M. p) ~; x" H& qMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
6 [+ r3 `6 F) N' }McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," t2 l/ O3 ?1 `  j! G6 f
MCASP_RX_MODE_DMA);2 q. I/ m6 k# ]; Q) m" \9 E8 p2 o. v
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* t# B; ?* |- U  p  W
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
9 K* g7 G! |9 L- g, eMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # f# ]: I3 O0 t' W0 r8 {$ e  x
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);5 _0 G+ m! z& j9 k
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * [7 G5 d5 l; B" m( L
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& |; \+ h5 O; N' `
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* O7 F, ^6 x2 Y' r, Y4 ^
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
: Q* c" B+ W% Q6 AMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,! r3 ^" H( L. l! o' T- L
0x00, 0xFF);
/* configure the clock for transmitter */
: K) A( ?1 \$ \1 O2 zMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 \& O" p5 v8 {6 }McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " Q# d* S8 ~7 Y4 t% p( q5 D3 E
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- C# [3 d* y6 _. S& S7 W9 [! w
0x00, 0xFF);; M% l0 v' e0 P  ^) R1 F

5 [; G: x( K$ d) l/* Enable synchronization of RX and TX sections */
! y* C0 c( S% i) {. H8 [% M9 [McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* i* P/ K. g" w1 M: |- |: ZMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
8 b2 g3 G# }  o8 kMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! h. o4 R  B5 m8 e** Set the serializers, Currently only one serializer is set as
4 N9 ~) v" `1 Q% L) ~8 G5 V** transmitter and one serializer as receiver.
7 W# ~( _( E1 v6 D$ |* N*/
; ~$ x: z/ E) X1 D6 d8 U2 L* AMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 E, v/ g: W" o& `5 C
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# P  C; r+ L7 p" p1 |0 m** Configure the McASP pins
/ g" Z& S9 u/ F! M# K** Input - Frame Sync, Clock and Serializer Rx
7 R8 z/ m) n' S- e2 i+ {** Output - Serializer Tx is connected to the input of the codec - i2 P, X3 _8 A! h( f% J0 m1 t* n
*/
1 _5 o+ }* t+ m+ `' b- P" tMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 o2 G7 X2 w/ ~+ Y# @$ D8 z5 z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) l0 k6 ?6 d( e$ v7 v1 EMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX$ R+ \" c) r# d7 v+ n+ e* w& R' |
| MCASP_PIN_ACLKX
! z# Q& r7 r, D| MCASP_PIN_AHCLKX
/ w) ~4 N0 q$ c. `| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) c2 a  x/ F4 t' C
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
8 a# r! J. `; j4 X# J, \6 p| MCASP_TX_CLKFAIL 8 C: H6 Z, Y, Y  V: f9 Z, S
| MCASP_TX_SYNCERROR7 }! H& G3 g6 q7 B9 q% D& m
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) ~5 j3 d: n% ^! b: E
| MCASP_RX_CLKFAIL
: C7 a2 [5 z  I| MCASP_RX_SYNCERROR
3 u. G0 y) t( r" z" s6 q7 P* {| MCASP_RX_OVERRUN);
3 I9 T" @5 r* y3 A}
static void I2SDataTxRxActivate(void)9 Y2 ]8 R3 K, p$ p
{( t2 `7 N2 n5 x0 Q. w! Q7 C
/* Start the clocks */. N! i4 j. L# E5 R) _
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);8 v4 M. X% O2 o* l$ t. u2 @
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 L$ ]" A( N, ^4 j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  ~! q3 W, c) l9 N5 Z7 SEDMA3_TRIG_MODE_EVENT);
/ r, t% f- |) `' b1 M$ q3 |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
$ a$ D' j2 _' }1 QEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
# T% o- Z. {9 s6 KMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
" l0 w6 z% U0 j, hMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' g; P+ C! E' x' i% K6 s0 r! H
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
3 T; K: }( L& X: Q0 W2 MMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& V4 S0 b0 [& [# jMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);- ]1 g) f8 ^& \" ^7 R: h
}
  Z1 @- ]  J. D  [" y* ~3 y1 `
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ Z% G3 ~4 G5 j0 ^- K1 y- t1 e2 j6 M! v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-5 20:12 , Processed in 0.045155 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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