|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序% h; d( B) ^0 o
' P0 g/ V3 s: R
#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File" J1 _4 }4 X# u2 }, p3 T0 H0 }
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
4 `% v9 j' j/ V! O3 h! x
2 F7 l/ F9 k1 ]4 E2 G//#define LedReg (*((volatile Uint16 *)0x41FF))) ]) m l U7 M; {5 P& U
//Uint16 *ExRamStart = (Uint16 *)0x100000;
# T& C' Y( p8 r3 u: H
' n+ G3 g! C" `/ c9 G8 R9 ]8 Bvoid spi_xmit(Uint16 a);
$ l' ?% y. `7 a- K4 X4 fvoid spi_fifo_init(void);
7 |" W+ D( M% d9 f) H7 G5 ~void spi_init(void);
, U5 [% T4 I* n, V$ y/ S8 F2 _
2 w- O1 z, Q( h8 ~void main(void)
" r" ~. I; T. y" M4 ?- m" C{6 E. u+ w Y2 [9 X7 a
Uint16 sdata; // send data
* b8 L) b7 L I/ ? Uint16 rdata; // received data
8 _: N& [. O3 _1 m8 @- |
9 y$ B( W! K2 R: N- p InitSysCtrl();
8 [7 s( x4 E$ u& N9 C; E# s! L0 y* ?
+ ?/ ~; @# B$ R0 [9 A( K
InitXintf16Gpio(); //zq- M% r/ }+ J, G |7 u( M
/ `% q4 ]( k& N: ?& k/ S4 L/ Q InitSpiaGpio();7 s& ]( ]' @) M) q4 M# c+ M
% z; K' v* R6 {. A) v( r) Q( q" u/ N& H
DINT;0 |$ N+ x6 Y* v- F
5 P" ~ [& U; q, P9 { InitPieCtrl();
9 T- q. y1 `1 s g3 ?3 y
7 H# m9 [0 X: }1 ^' K3 U// Disable CPU interrupts and clear all CPU interrupt flags:8 y$ W6 o" R) d, ~" O1 S; P% R. O
IER = 0x0000;$ v$ o4 d. \( S: e
IFR = 0x0000;+ S1 k1 l9 D. b/ }/ I r# L0 g
9 G& w7 T: M/ B" X/ |
InitPieVectTable();
1 Z1 c, c) L5 d& U( O3 E2 C
3 r" D3 b7 s# z) c; O+ i6 O' C spi_fifo_init(); // Initialize the Spi FIFO. z/ d0 z+ s; N
spi_init(); // init SPI
) Y( f- r5 m6 J" b/ e2 Q! l
7 F- v- B7 s2 A' Z. O+ m sdata = 0xAAAA;
8 J& S. p( J- Z6 N, B* B: u( E' n for(;;)6 j2 \+ y1 s* V, N
{
2 S' z8 ^: c8 H // Transmit data# N) v; ~3 V1 A1 A$ s# a
spi_xmit(sdata);3 G2 k D y ~# O: I7 _& B
// Wait until data is received0 @5 X5 F4 W& [/ M3 Z
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } ! y. N2 W) p( B8 S3 }7 [) G
// Check against sent data
" F* ]- S! Y& N& u rdata = SpiaRegs.SPIRXBUF;
0 \" n, b x; f- s
; V, ?% C7 x, w; C8 w% }# [! Y2 K //sdata++;
& e6 W, y3 u# z( ^; p) H
" @2 f) _+ Y% y8 S2 d/ h* H$ k# H } a: X# T! }7 @7 [/ V2 X
} 8 `6 ]) {5 P! p" b
void spi_init()
4 x& u8 ^! d5 I" Q) E- I{
5 @* q( b9 E0 g7 `5 } j$ { SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
4 y g/ s9 A+ w: y& B1 Z5 j1 K SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,0 Z1 l+ Z4 a) _
// enable talk, and SPI int disabled.
; p) f2 |2 N3 r1 H) T SpiaRegs.SPIBRR =0x006; //波特率7.5MHz
. ]8 A6 X# Z3 Z9 q8 m) {$ I$ s SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset% A& u i$ E% a: X9 b- W+ h
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission5 [: l+ j+ z& C* _) n& y" w M
}# v! R& F! W& o [: c4 ?) T5 {
, r x4 o6 n6 \- ?. k' v* V P) ]: }
void spi_xmit(Uint16 a)& R) y) f4 s3 @. x1 r1 n$ I
{9 k" ~2 ^7 T9 ^9 f6 ?
SpiaRegs.SPITXBUF=a;4 W6 B' P: Z. Y# d# a
}$ R/ h% i, ~* q: U
/ G( `# x9 ~6 e0 A* ]
void spi_fifo_init()9 v4 H9 |( v, b Q3 s9 x( ?- g
{: G/ c. B* l( O8 y* K) B, V2 o
// Initialize SPI FIFO registers
2 U& R' B# P( E7 ^0 p$ E2 C SpiaRegs.SPIFFTX.all=0xE040;! M, k0 {( O; J
SpiaRegs.SPIFFRX.all=0x205f; R1 C: O% a B0 N
SpiaRegs.SPIFFCT.all=0x0;" I. G2 ^* k2 I
} p8 a2 {6 S% J( L; A) x# O+ v
(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了)
6 n- u$ ~" O+ D |
|