|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序' I3 Z! Y, l" x' ^" j% m! w( a
B7 K# W5 {4 S. E
#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File
# V/ u4 _. x2 l8 ^, o#include "DSP2833x_Examples.h" // DSP2833x Examples Include File6 g8 `1 a( H- D
# a: H3 ?4 }, T& o2 A4 z//#define LedReg (*((volatile Uint16 *)0x41FF))) Q* D, K Z5 \2 s. p
//Uint16 *ExRamStart = (Uint16 *)0x100000; Z4 {2 K5 l4 L+ T4 w
6 y" _% I0 F9 h1 X5 S6 Lvoid spi_xmit(Uint16 a);9 k6 O ~+ T' t1 [5 \" Z F& \8 t
void spi_fifo_init(void);; C$ h- ]- K8 k, F2 p% Q5 o. T
void spi_init(void);2 @3 ~0 K Y" {
5 w5 ^6 a) G: R( N; `! D( D; p3 Dvoid main(void)0 B0 P. C0 ] L3 u* N9 b* j: n
{
- X8 C* w, n. V) m! y. S3 {7 r Uint16 sdata; // send data
& B( {! ^* I! n- r9 Q8 d( p Uint16 rdata; // received data
8 o! I! y0 X! P6 f1 D; h+ p& z. _' D q. ]2 F5 k+ g
InitSysCtrl();
5 v0 ~+ ?8 Q8 x( n- ?6 [: R( j4 w% y ^( x+ R. z9 e4 \! }
3 F. z% r5 a1 f2 [. u
InitXintf16Gpio(); //zq# i. X3 {' a T% ?) b
6 b. p4 Z! Q5 H3 p' w; `# o InitSpiaGpio();
; T$ G" r+ Q A( ], {# ^! w" I$ ]/ Z2 ~0 V- u: T) g1 O2 |8 G6 }
DINT;
( F; y2 T* M3 l' X9 A0 K3 ]& m& k! \1 J9 s
InitPieCtrl();8 P+ e( c/ k. E
. v: D: Y J' s) c# U8 p
// Disable CPU interrupts and clear all CPU interrupt flags:5 y. o: b2 V( T* J
IER = 0x0000;
$ j6 L2 g t* ]1 b+ R; L9 K5 n4 Q$ K9 v IFR = 0x0000;' R' K! g! S% `2 O+ @
' k% |6 D* s. @8 ^; o
InitPieVectTable();
4 a1 N; ~6 S; m2 W
$ h W2 H; c- k6 X$ F1 }2 z spi_fifo_init(); // Initialize the Spi FIFO& ]( C1 J$ X9 c1 y
spi_init(); // init SPI, z0 g# w* a$ o$ w# j, W9 C
7 L w; [% W a* C
sdata = 0xAAAA;
1 J* ~+ B8 K6 M! M) n& W4 ] for(;;)/ ^7 R* _ C8 e/ [/ X5 Z
{ % y; W5 A$ _& E5 h
// Transmit data4 a& l3 o5 Y0 j& [5 c" h
spi_xmit(sdata);
' j, t1 n* u* t) g" g+ o // Wait until data is received9 f$ w3 ~4 X6 H4 h! ~4 d
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } 7 I7 n0 I/ ~, G" T3 k1 [
// Check against sent data
3 s4 {3 i, ]6 D* c! ^ rdata = SpiaRegs.SPIRXBUF;. r4 [+ x8 c. W1 U% _: \. p: f
- D* g5 K) t) B% L7 r
//sdata++;
7 y- ]/ Z: I. K
1 `, g7 G. D0 o5 g& r3 m. E! J }$ B6 [6 h& u' l2 y- ?$ m& T
}
. T* V0 d! m: R7 o; r; [void spi_init()
/ Z7 n2 a) y! N& K5 v. V. v{
, X* T2 k6 }0 N# s SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits* G$ ^+ R; h8 L. Y3 E
SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,6 s, L" N1 D0 Y& I% d* B$ f
// enable talk, and SPI int disabled.
+ w; |0 p# \/ }- `) K+ d+ V! A SpiaRegs.SPIBRR =0x006; //波特率7.5MHz: `6 |8 t- D1 I; t
SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset
T; k7 Z) \ V SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission; k: {5 f. Y' P! K
}4 K# d4 x' L' V" k3 U' T
! C6 h* ~8 L* ]. Cvoid spi_xmit(Uint16 a)5 M+ C! i& C4 |$ G. u& a ]
{
. k. K" A, T" g+ b0 L SpiaRegs.SPITXBUF=a;
- Y6 ?1 ^& k( D$ F}
0 v% i0 M: o( K- I# Z; S1 E* P# ~2 z2 b
void spi_fifo_init()
6 J. M; R1 l) @2 o' T{4 ]1 K% U0 o# N/ R) o7 s
// Initialize SPI FIFO registers8 P% V% m% g f
SpiaRegs.SPIFFTX.all=0xE040;/ C9 g- K; ^7 m
SpiaRegs.SPIFFRX.all=0x205f;
) K) E1 T* e% _4 P' T SpiaRegs.SPIFFCT.all=0x0;
! f. N1 J' L2 a/ L4 H1 d0 u}- [9 a. Y' [' r- f7 I
(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了)
- n& e0 C Z) c: j. c z |
|