|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序
% O, z8 q8 Q+ P6 f* m& k( ]
z; `3 U$ S$ P7 ^7 w. k: G+ {#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File1 X0 s7 g9 A. O/ M& r7 v4 J
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File7 Y: L8 u1 D" c4 w
$ N) ^: q7 ?1 K
//#define LedReg (*((volatile Uint16 *)0x41FF))1 l# z# T; @- c/ U/ b# S* l
//Uint16 *ExRamStart = (Uint16 *)0x100000;
. i+ J. P1 n- x. q! a0 ?8 D7 h) u8 P+ m
void spi_xmit(Uint16 a); N8 D H9 ~/ D5 y
void spi_fifo_init(void);; I# C3 {$ I7 g( V/ x
void spi_init(void);
( Z& m% h9 Z3 q. m8 S' o$ H) r1 M: C: D# P6 i+ B& _9 M
void main(void)5 E i/ p/ c8 X; b, d
{0 }4 G- n" w9 r
Uint16 sdata; // send data/ }# ~% T+ G1 a& |
Uint16 rdata; // received data G% o1 S4 J/ {) Q! o4 t! O
7 ~) o4 F9 J5 r4 V InitSysCtrl();
]4 ~5 i% X O9 ] T! |: d v/ S0 u3 h- D
. F8 i6 |7 V0 T2 E
InitXintf16Gpio(); //zq
( U4 j1 |$ o) V L4 U& i; g
. Q- L5 n. b7 _) m- A# L# R2 z InitSpiaGpio(); C& ]- h. y, R/ P1 _
! ]& O$ l# m; J# \9 `/ w
DINT;
2 h" ^8 E9 R; J' I g% \4 q; D& W' y
1 ?3 _# ~0 f- M9 W+ s4 R/ n' O1 Y InitPieCtrl();
5 S& l$ G) C( {
! u& f3 E! f t( d, K1 ^& }// Disable CPU interrupts and clear all CPU interrupt flags:% ?. Q; r5 y; r& {8 B4 p
IER = 0x0000;& O# X5 W4 D5 X
IFR = 0x0000;
+ M. p k; A+ k- z0 e 3 F9 M( `( ]# r l6 }! ]5 F' H$ u
InitPieVectTable();, j& \! u9 x/ C
* D3 V. X2 h3 ]1 F1 h' Z3 C
spi_fifo_init(); // Initialize the Spi FIFO& E+ _6 o$ T# ~& ~0 g
spi_init(); // init SPI
5 I& h% v# C1 q% y3 K1 G5 E, y7 V
sdata = 0xAAAA;2 \, J( ~0 q- p
for(;;)
# S# x! ^5 u. A9 V: O0 m5 w" I: p {
; ~# W6 r. I1 h1 Y3 c // Transmit data
: f h$ [* m: q spi_xmit(sdata);
}# ~ Y; X4 A: J2 c; U // Wait until data is received: J h1 X+ B* T2 K2 C
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } 8 _8 L$ {8 [$ q" f* _/ ?/ ]% L
// Check against sent data
% D% }0 B1 U1 P! \. x8 D rdata = SpiaRegs.SPIRXBUF;- z# i4 Y2 l1 h/ q, \$ T
' e6 g& B- H( x" u ^; e2 r/ B% v //sdata++;- T9 k+ q4 U: V* n
; ~: W, g# D: f8 L7 O2 r4 J8 C
}
8 D4 l, y: Q- I4 g! d4 y}
' k1 b2 Y5 \, Svoid spi_init()2 A: e, T: m$ O/ W
{
" e0 \$ v- f M3 c8 c/ S" Z SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
' K- U% ^8 c) [( G' b I$ Z/ k SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,. M& G }1 Z. r0 a" i$ X4 S: Z
// enable talk, and SPI int disabled.7 z' y7 ~3 G" {! f; N1 I+ l
SpiaRegs.SPIBRR =0x006; //波特率7.5MHz
( n8 Y7 i: o$ g SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset; [. d2 [' b; y, r9 C! U4 {
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission F* ]1 j! J! X' _
}: d0 z7 b3 n% Z' M4 S
2 i& \2 B# Y) J7 @. g
void spi_xmit(Uint16 a)+ u v) Z/ K4 J. z+ X# u7 b
{
- ~! b! t8 {* f6 l$ j SpiaRegs.SPITXBUF=a;0 \- v9 E9 l- K/ V+ L& `
}
4 Z+ n+ @+ `5 I% d% W4 _7 V" B6 Y
/ _+ L) b9 z4 g0 N5 c* Evoid spi_fifo_init()
4 |. j6 C4 u. D5 t1 n2 P{
9 T4 F" P. {; s- L6 a$ X p// Initialize SPI FIFO registers* b( ]' F1 C$ I1 y
SpiaRegs.SPIFFTX.all=0xE040;
* g' a/ w: F$ T3 d( f: ~6 T SpiaRegs.SPIFFRX.all=0x205f;
b6 f F0 q% g' h ] SpiaRegs.SPIFFCT.all=0x0;
3 f- Y& e& X' ?' U$ M. J* F}
, e2 H/ ~4 _) S. X5 |( ^(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了)5 \- o5 q0 N8 e8 a- N2 b
|
|