|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序
* S. `0 V) y [, r/ N, P. O( X# r# Y( m9 `: {% N* u8 J
#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File
3 P P& g* r% S6 q3 ^$ @ F$ N' u#include "DSP2833x_Examples.h" // DSP2833x Examples Include File5 o) ?! J! m% C0 U* `) ?2 d; ?
$ |8 R8 u( k6 }' h//#define LedReg (*((volatile Uint16 *)0x41FF))" k' m$ o: l0 f* X0 T# h1 F
//Uint16 *ExRamStart = (Uint16 *)0x100000;1 M1 r# G7 c5 s/ P8 F
1 S& r9 s0 r {" I% Q* I# v$ ]; Q- r
void spi_xmit(Uint16 a);) _1 V5 \9 i$ x8 v4 l& G
void spi_fifo_init(void);
2 h" \6 H2 U$ c/ y! e; L/ `void spi_init(void);
; |* I/ W5 A+ T5 Q) U* [' n) y- G7 l, Q6 }$ C3 C; s* z2 Q
void main(void)# ?5 Z" g3 i3 i
{( a. j/ h( t# u Y
Uint16 sdata; // send data0 ^1 D7 a" C, ~& C& o% _
Uint16 rdata; // received data) r7 Z( U* \0 M
( u. b& p, Y- I; F* B# y
InitSysCtrl();7 g' n2 u6 D c
# r+ Q# Y0 V7 H+ ]
/ {3 O1 }: y: ]1 A* z' m! i8 v InitXintf16Gpio(); //zq
0 B1 y& n5 L" i, |2 M: g$ n4 j
! j; P3 [* O9 f: } J" F InitSpiaGpio();$ P: m. H+ ^$ P) v
" d9 R( R7 F- b6 w H" T; F" l7 o0 o
DINT;
' n2 b) }5 \# A& E
- y- S/ d, [8 j; D* G0 @ InitPieCtrl();% o# _5 m J: F& l u
3 r1 d! N3 [% q) w0 _. k
// Disable CPU interrupts and clear all CPU interrupt flags:
# j/ k% u9 \- V. _- F4 @ IER = 0x0000;; ?7 v# [: m3 P) V. T w5 ]9 J
IFR = 0x0000;
/ J$ {4 ?9 z: y! E# c0 V 2 i w' L% r2 t. N
InitPieVectTable();" [6 G. A* ]: e' g
: ]# Y- F) y9 \3 S/ L7 G spi_fifo_init(); // Initialize the Spi FIFO
; h: A' I* B; G9 |1 k spi_init(); // init SPI5 I* S% r" W. g' k% J3 {
* K& q, O' q1 \) A: T
sdata = 0xAAAA;! x; b K- n* t6 n& v
for(;;): S! I% H+ s# _8 z6 n! W
{
& S1 S/ U- x) d# t7 |6 ?; }( y // Transmit data* a" n( i% }/ S7 o, v) |/ E- q. w
spi_xmit(sdata);4 ^2 p O) G' S) E: D# ^, ~$ b* e7 |
// Wait until data is received
3 }# w- j0 T5 s5 m! K7 A) z while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } , B% ^" Z+ |# T0 O, g0 h
// Check against sent data7 x( I2 s" A1 F( S, t4 z
rdata = SpiaRegs.SPIRXBUF;9 R6 j3 n5 n$ I% R! b
& U5 w6 r l* Q( I% {$ q) j //sdata++;% n0 U5 N ?! u: U
: ~$ i+ G* b! {! z
}
8 ]) c- x2 g( C' s} - P3 m* l2 c* l w
void spi_init()
0 N6 M; q* C5 A- |# Q" b{' r" p' _3 H Z$ S( E6 ^+ G* M
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
0 V6 U$ Q; o* T8 |1 s, T SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay," _' A }5 d1 ^1 [- J* x% h
// enable talk, and SPI int disabled.
( Z- A7 a. ^/ N, a7 P6 K- h' z SpiaRegs.SPIBRR =0x006; //波特率7.5MHz
" o( ~* W1 ^$ d, @; X SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset8 E+ c+ }8 ~6 j1 V2 e
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
: s, ~3 q9 G$ E, Y}
' w) g8 l( R7 ?0 n/ [' q3 u" Y4 p# X9 o6 K: j1 ~& f5 j7 Y+ s
void spi_xmit(Uint16 a)# X9 O. n9 w: m8 M) f1 m$ N% B& l
{) X7 s$ u- F' a4 h
SpiaRegs.SPITXBUF=a;- N) w# B P" N% L1 x( \
}
: s" f9 ?& O. m1 Q7 e" y* s; n% M) x) U: A1 w
void spi_fifo_init()
; G; g# B" D/ I{
6 H- s% ]! r O$ ?3 V// Initialize SPI FIFO registers
% u8 ]8 t; v' l8 s7 x SpiaRegs.SPIFFTX.all=0xE040;6 p4 h0 c. p1 m( W2 a* U) q
SpiaRegs.SPIFFRX.all=0x205f;& E1 { a- p E, c
SpiaRegs.SPIFFCT.all=0x0;' e5 a0 {& N) X
}* T/ I* _# B& R+ W. h. m+ b3 U; g
(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了)
. r4 x( K& C2 u+ [7 g1 ?* P" E+ \ |
|