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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9710|回复: 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,
9 x, O; l+ I- yinput mcasp_ahclkx,
0 F3 h* F2 A8 i0 w$ Pinput mcasp_aclkx,
% K0 X) ]1 ?' Zinput axr0,4 Q" ~* O9 P. \7 t5 r* b
& c3 j) W8 R; j+ Y" b) k3 G: g9 d
output mcasp_afsr,8 T* v! z7 o/ M
output mcasp_ahclkr,# P9 z& O% O; Y! R$ q- g7 _! y
output mcasp_aclkr,7 `! I' N$ C: \$ F+ o+ @5 j
output axr1,/ g' [0 K- @6 }2 t6 x/ s, o! M: A- o* Y. h
assign mcasp_afsr = mcasp_afsx;0 Z* s9 P1 Q9 V: V" G  k  \
assign mcasp_aclkr = mcasp_aclkx;' d! L* x) g2 a1 L
assign mcasp_ahclkr = mcasp_ahclkx;% o  a4 r6 N3 U
assign axr1 = axr0;
: G: F% M1 }+ S2 j
: U8 ?# a1 Q! l2 r
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
9 I9 m$ m6 H, m: m2 t: [
static void McASPI2SConfigure(void)
0 ^/ ~! a; i0 e% a) {{
. U' O+ C6 x  w7 [2 v' ^* PMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 l% k4 Y6 ]) @( ^4 }' N" |1 PMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */! ]3 \. [8 U( Z* R$ _
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 Y0 |2 C. U. e3 d) \McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 P8 O: u/ m5 Z9 d, TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 e: [6 M/ w, \MCASP_RX_MODE_DMA);
7 ?; m, j3 g1 D4 V9 {: G( w  w8 {McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 [- A7 m, z* y- ~! ]3 r
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
- V1 J$ v3 y- P: i6 DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 u" p  G- x% `- A+ {  n$ sMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) J# ^9 f- Z4 l
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
+ }& I% ^3 }' E$ z2 lMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; I5 {6 W* [* J) A1 G
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
& ^  u, w# x8 ?! {3 |" S: m  BMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % u! k* C2 P; B/ ^8 I. s
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,+ e; |( S! x6 t' M
0x00, 0xFF);
/* configure the clock for transmitter */7 @( @8 q7 i/ f
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ y7 j7 K0 B* Y9 _; q& P* _$ F  dMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& N5 k$ |9 g$ x* e' OMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. _4 r/ t4 F# ^* B/ z8 P0x00, 0xFF);
4 i) \+ b& u; k7 p/ g9 {7 y+ _  C& W/ t0 h/ t; g: Y
/* Enable synchronization of RX and TX sections */
, E" o$ E4 ]/ OMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) A1 G1 l: x: k- x: S
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 q7 w; o1 s" \5 H8 J
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
" W/ A+ _" n/ W5 [** Set the serializers, Currently only one serializer is set as2 B  ?8 ]2 J# G: L4 d8 Y* ^$ @
** transmitter and one serializer as receiver.
- O4 E$ g3 F  d0 Y*/* M' l6 ]* s3 T/ v' F
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: T" d0 X4 [- Q2 bMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
2 J& i% }- J" O** Configure the McASP pins
4 r/ q$ P1 [. M7 v** Input - Frame Sync, Clock and Serializer Rx) K  \. d- w& i
** Output - Serializer Tx is connected to the input of the codec 4 Q% H2 C' S7 I% _5 @& w- y3 R
*/4 i+ F8 C0 u! z4 j/ F" O
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ C4 |! v6 @# K4 i# X. b2 \
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ q: J  q0 G+ x' v* o- k7 Y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 {* Q$ V# V7 @' L7 \
| MCASP_PIN_ACLKX# K) K8 q$ H* o: T6 h3 D
| MCASP_PIN_AHCLKX  _2 g- K  W) l
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
+ b& H7 C. T. C" _3 _McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
9 n; O" M9 W+ g, Z| MCASP_TX_CLKFAIL
7 W" Z+ L' r: v& X: K: o  y0 C| MCASP_TX_SYNCERROR
9 S) j# W% ^( j. J2 E$ J! s6 `| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " `  _: a+ s/ h8 Y6 r
| MCASP_RX_CLKFAIL, K* w5 g# s# e" K) k2 s( [
| MCASP_RX_SYNCERROR ) ~& s  o8 l/ _8 _1 H3 H
| MCASP_RX_OVERRUN);
$ r4 \* [6 ?$ E; q$ }# b* ^) ^# Y}
static void I2SDataTxRxActivate(void)
# [1 d# L, T' Y  S  C+ ^1 S{% x( V  w! q5 k4 M/ c! q
/* Start the clocks */( c5 S/ ~* h# i* q7 h5 k
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
: x" E2 K+ A6 M. x' G, hMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 ^- D. V/ j7 w$ M; D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,! o0 V2 G1 S' y& C6 i
EDMA3_TRIG_MODE_EVENT);
) V" d/ C3 a5 V. `4 ^/ tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 W# {/ P2 T" q' eEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! h& @2 b9 F4 c) ~! g# NMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 y; L# m: Y. e* |* s  ]6 g& gMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
6 v9 v. ^5 U5 \' c# m0 W4 B% I8 nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. j" ^$ D7 R2 Y4 `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);- f, k- t5 G6 X% O
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( @" Z2 j" k, M3 ?}
" F$ e; U- a1 g" ?1 ~  A& J; Y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
& I" {- o8 s1 i* c) P$ @: p# m6 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-18 03:26 , Processed in 0.039084 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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