|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序
8 H$ M) p& ?) `9 z8 b! |
* Q4 {& ?5 I: w; ~1 o8 ]6 s#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File r k- V/ z/ W& m/ L) n
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
& ~- w2 ^+ O8 a& f3 g4 e& V" C3 h- O6 ?4 a: K- Q# D2 B
//#define LedReg (*((volatile Uint16 *)0x41FF))
% C. y9 M( Q0 b* c4 l1 [' F//Uint16 *ExRamStart = (Uint16 *)0x100000;& A1 ]$ U2 d) M1 U
t) A w% Q9 o9 r/ Y A4 f0 X* _void spi_xmit(Uint16 a);
4 T. R2 v, x. K. v& P1 Cvoid spi_fifo_init(void);0 G! i1 ?( y5 N6 @% {
void spi_init(void);% o$ A4 x2 ?+ ^0 M' k
+ ^6 v' Z' ?5 E" n. V0 vvoid main(void)
, {2 T+ l2 x4 u* n$ T H$ c3 B{ n/ ]3 L0 S8 M9 L& I+ G
Uint16 sdata; // send data
% S2 Y) c! b/ O7 ? ~0 [ Uint16 rdata; // received data
, m: b$ O8 T, d$ a) K. G2 g! a% P2 p
InitSysCtrl();6 b7 W E- [' z4 S5 s, ^) R
0 d5 F/ p! t0 a3 W2 d, [6 z0 E6 _6 C# C- @6 r
InitXintf16Gpio(); //zq2 s! Y) r8 ]4 |' K9 ~3 K
5 `9 }* y8 X+ N
InitSpiaGpio();
" [ k ^0 d0 A) L) w1 J; ^( @3 k. E0 s# r5 O, ^6 g, p0 @; |# t/ _
DINT;
8 S) h. p) _3 o2 a7 p
3 u0 \. o3 c% Z2 e2 T( ^- z InitPieCtrl();
6 i( J, {. Y% B7 ]) N$ o/ w" N4 ~3 V+ [# X4 t4 b3 Z6 Q
// Disable CPU interrupts and clear all CPU interrupt flags:
9 ?+ p+ a. _! N! w4 r IER = 0x0000;
( L# C' k8 z, l! n4 _$ ` IFR = 0x0000;' M2 H: e, `5 m* X* v8 ^+ Z2 \
. C3 E2 F+ K7 I3 j1 `6 X7 a9 R
InitPieVectTable();
/ r9 h+ g( M3 s3 |2 L n& U" z2 B0 |, _$ E$ X! \
spi_fifo_init(); // Initialize the Spi FIFO
4 t+ n/ x4 e6 w8 N0 w8 `9 W spi_init(); // init SPI
1 c' o7 R9 H5 a. \
* \4 `8 \9 j/ V$ h6 d sdata = 0xAAAA;; H$ e. ^( M1 v9 S2 n% O
for(;;)" d2 B, ^1 ^3 ]3 M/ x5 o) H5 A/ g
{ ) E2 |, K5 K1 P. @' W7 f7 b6 d3 A
// Transmit data( T. [; U) |1 N: x2 b
spi_xmit(sdata);
; o) G/ M0 S* z9 E; L // Wait until data is received; i8 d" ~1 k1 r2 j- G
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
. ^* L7 v5 W6 T9 I0 P // Check against sent data
G* N& g H# [6 }5 ?' t* B rdata = SpiaRegs.SPIRXBUF; R p# s+ j8 Q# B% u& X
! f& ~% s; O8 q2 ^
//sdata++;
4 ?6 Y4 F' ?/ C% ?, c& {. N
; N j; O4 C7 g" @& E }
6 u" i+ T0 t1 A4 R+ s) x% n+ F} 5 |' j- ~! B) F+ j9 s
void spi_init()6 k, G& F+ ]! \/ B1 c @
{/ f% Z9 k$ D$ [: R" @- {3 E
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits) H* g, m0 {' Z( C$ E t4 x6 w
SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,# r' w. w0 q+ r1 |) F9 C
// enable talk, and SPI int disabled.
. O6 [3 A& S1 K9 { SpiaRegs.SPIBRR =0x006; //波特率7.5MHz, v: l0 j; j- @- X7 l8 Q- l
SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset- U9 N) g! x& z" v* y" Q+ ]
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
7 r* V+ y% H# ~" R: i}- u- m- g+ ` ?! t6 H. g( H
9 L2 a! B0 Z4 @ O: q! l5 j7 `
void spi_xmit(Uint16 a)$ f2 }% u1 m! m
{* M* N- @7 a' n/ X
SpiaRegs.SPITXBUF=a;9 t" w9 ^- ~: Y
}
- c$ A+ }4 \; K" l1 F& a% K! {: r8 h2 h: w* B& f7 m6 u2 k
void spi_fifo_init()4 I5 L) [" h a' @9 x6 C
{9 \# d) d$ N6 j9 S. R
// Initialize SPI FIFO registers- r) H- ^. I0 ?: Y. ~0 M( _
SpiaRegs.SPIFFTX.all=0xE040;: [. {9 z0 O- J5 W& ?( d
SpiaRegs.SPIFFRX.all=0x205f;
; v L) m8 o7 ~ m V SpiaRegs.SPIFFCT.all=0x0;9 P% p4 f* p3 c, h. s* e; }
}& m5 k- n8 T; l0 _: L* [
(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了)
( F# {7 [% ]3 e$ d |
|