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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12322|回复: 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,( h, R* [1 G3 h
input mcasp_ahclkx,- I! A% V, z' Q( J8 c
input mcasp_aclkx,
3 B) A2 ?1 u6 N) finput axr0,
0 n. s. m8 s8 p- U: ^# I2 O8 S9 v- W1 B% u& I) }8 F5 @
output mcasp_afsr,& i, v* |. c4 x% B) a) J
output mcasp_ahclkr,
  l1 P( I# k+ o& ~output mcasp_aclkr,5 b" [4 c8 F# L/ f$ D0 p' O
output axr1,: _( F. z- h# F1 \2 [2 N
assign mcasp_afsr = mcasp_afsx;4 z. o, M. x0 t6 t0 j
assign mcasp_aclkr = mcasp_aclkx;( P4 I% ~) o4 ^6 D* U
assign mcasp_ahclkr = mcasp_ahclkx;
2 x+ ^3 y! a2 A0 @4 Vassign axr1 = axr0;

  R1 t# R$ E" v) h
; R: c' }. u+ ]! R2 _" n
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
! o- p: \3 W) a4 ~9 c8 n
static void McASPI2SConfigure(void)
1 R9 h- L2 Z2 N/ Y" T6 J{  w# T$ e5 r& h) U+ N. t
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
' p+ V; P5 X6 a7 `% s& h# J6 W9 lMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 @2 x' h& N3 ~+ i; t8 T
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: g3 y: M' ?3 M$ o! r( f
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# `: U2 z7 Y9 c/ o! |2 b( ]6 m
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) h* x4 W  J. m0 f
MCASP_RX_MODE_DMA);; T3 D  R  D3 M9 ~- |
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ P" |7 H7 c- lMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */% _1 C4 ^/ D7 f8 M, F& A3 e; m. s
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
0 j) c2 ?% K5 X4 D0 t" I2 R7 PMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 l) _; a1 E  n- ]
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 `4 l4 J! O! H: P4 t' _8 f6 y2 f4 e
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
4 t' s' A! o6 s7 x6 Q1 |2 mMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);# s& K! k' e6 M+ {7 U4 j  `; _
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * I' Z: j; M" l! v! w, C$ Q# ~/ e1 y
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! X$ V( r3 {3 @3 q( |0x00, 0xFF);
/* configure the clock for transmitter */8 O7 T4 l: s5 u+ R1 `% O2 s
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 R5 V9 a. R* M7 o( t1 m+ LMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
; }' E; }# A; ?6 e: hMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,% \' V# k; u  e- ^# H+ O" E
0x00, 0xFF);
& E2 Y) L2 L3 w8 E, m/ O- Q6 \$ T7 J! J- H" O3 L4 D  `2 B
/* Enable synchronization of RX and TX sections */ + F) }4 l# N8 ]
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */- ]( q. X5 }0 e* `1 T
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  b2 `6 c8 E& G/ q7 u. m5 @McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*6 f* x1 A& ?6 h; F' R
** Set the serializers, Currently only one serializer is set as
! E$ M( D, J) g# C3 [** transmitter and one serializer as receiver.) R" [/ f6 f. [. Q1 }
*/: y: u; @. C4 e: T6 V0 E
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( j- D9 K4 D$ ~2 p! O, w3 {$ h
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*- m3 U6 Y5 x6 I) K) X9 q
** Configure the McASP pins
. _8 g6 K) K, i" K) L** Input - Frame Sync, Clock and Serializer Rx/ x. G- W8 A; o8 u( V* {. `
** Output - Serializer Tx is connected to the input of the codec
" V0 V9 [9 o7 l  O1 z*/( v" F: k  {/ ?7 w! }# Q' q
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 S! I* j. j) F7 ^6 y1 u# O
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ P6 U& i7 p6 a, ]7 x
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) M1 M# M, k. B# |, L
| MCASP_PIN_ACLKX5 r0 T0 K' ^/ [
| MCASP_PIN_AHCLKX' k6 k" \% f/ _4 ?: D; k
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
0 k# z$ h; `! i# }+ dMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
, H- u/ H- x" V4 ?| MCASP_TX_CLKFAIL 9 K( X% G* @, U% O8 r, V6 X
| MCASP_TX_SYNCERROR) N7 u8 z6 |) M, A/ y/ _1 G0 _
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : N3 h6 s; i& U" |+ i, C& ~3 W
| MCASP_RX_CLKFAIL
: @- I/ @! V7 a" z| MCASP_RX_SYNCERROR
. z4 l4 P6 E1 k0 j! h7 @3 W7 |$ t6 S0 d| MCASP_RX_OVERRUN);( Y! r. S% L1 l6 m
}
static void I2SDataTxRxActivate(void)
0 N' w6 |4 x4 ]- I* |{
- n& O( R1 V) U/ [5 G6 G/* Start the clocks */% I5 Z% o( c. v4 j2 B
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
( I+ C7 w1 S4 ]/ @$ m0 F4 h4 nMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 \9 R/ D* Q9 q/ ^# }& H
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,' R' {" F# [7 c% T5 ]! K5 \
EDMA3_TRIG_MODE_EVENT);
1 z8 D  l% b0 h0 Q( UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ; H" r* r/ |3 L  L; ]. m7 f4 D
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ X7 U3 b# F" GMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);' ?% L: O9 t  Y; `, V& }6 `! t$ p
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
4 x6 I! H! t  w) ^/ M# R7 }while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
1 u! v0 x: A7 ^McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! E( k6 t1 `3 YMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. K( u) F/ G3 v  i' v: Z}
( ~9 N" s7 q6 }* [4 _$ q2 u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 a% V0 L  G3 @! t" B2 x' T- W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-5 09:50 , Processed in 0.038599 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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