|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
8 {4 L, o# }0 T ?
2 t" h- t* ?% b; m! W) U" R6 t7 d! L2 S& ~! }0 n2 L
如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序# C/ A; a' l; D" x
1 j( h Q1 @, h$ ?8 o3 d
#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File
- R$ d5 \% g* P, {#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
6 k) C- L0 K8 | I; X# y! U" q3 \/ m& W
//#define LedReg (*((volatile Uint16 *)0x41FF))
/ Q, R3 O8 |9 `& B( `//Uint16 *ExRamStart = (Uint16 *)0x100000;. W& l! z( ^' Y7 _0 ^
+ ^' J- l Z% S7 E5 ]+ g wvoid spi_xmit(Uint16 a);
8 C8 [2 |/ N' h) Y9 U- O- Svoid spi_fifo_init(void);
( S/ E( f; j3 p% W9 Wvoid spi_init(void);" O9 `9 U2 I" C) k v& H) h8 x0 O
# z8 m" v8 k1 e2 h# k
void main(void)& M! `" O3 R" r8 d* F, J& A+ d
{' f9 i/ y) S3 D0 @
Uint16 sdata; // send data
9 `7 ?, A4 b% W9 _7 v Uint16 rdata; // received data
' `4 S& g% D! q- }% W4 P' l0 o3 F* \+ x$ Y; L8 ]5 B
InitSysCtrl();' w9 ^ `& J7 j& c' S# d. O+ g) b
* f7 o" ^3 c/ d- P4 _9 C
$ H) h! C8 F+ c: ~- ]" l v( ` InitXintf16Gpio(); //zq* M( s9 A3 I6 F! ^# Q! R F8 p
! o+ {/ m6 D X
InitSpiaGpio();- G' V( j- q' z9 n
: |2 `+ ]' G5 V. {; H# p
DINT;
$ u# z+ p. }4 a6 y) N5 m; D: w" I% y* Z' F1 w& G
InitPieCtrl();
0 M% T" Q$ d2 F" `* g: Y% x/ W* c' k. o- k
// Disable CPU interrupts and clear all CPU interrupt flags:
0 _9 N4 K( \3 w S0 K. G& W IER = 0x0000;
1 V$ L1 H/ \$ L IFR = 0x0000;
3 G; c/ ]; S }+ ?% n: n
* m! d. F7 L4 P: m InitPieVectTable();
0 F" I( H* ]% D3 Q) F. ?
. ]8 f# x; `; ]9 d) n( e. k* e spi_fifo_init(); // Initialize the Spi FIFO: J* V; c5 j* M. N- T/ l
spi_init(); // init SPI* K7 n) |6 ] _* `
+ o7 ~7 C4 A% S) K% t
sdata = 0xAAAA;2 B2 o. M- t1 ]! T9 s/ h: W& D
for(;;)
/ x4 k+ y, p. w7 V+ q( Z { & Q# G6 x+ D' Q0 s
// Transmit data
% I1 Z- U' F. w: C spi_xmit(sdata);8 a! J6 {1 x" Q9 U: E8 Z9 R! n
// Wait until data is received; u5 x7 b& o+ Z) m8 C( u
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } $ X+ j7 M- H" @1 }/ o4 E+ I
// Check against sent data+ C: ~* D( p! ?% G7 ^
rdata = SpiaRegs.SPIRXBUF;5 h: |% a9 E6 y8 ]
% g3 W5 V' k) ?: H //sdata++;
; d) }- j, c) c: S( U# V& [. ~9 I1 W( q* h+ B& D) S7 l
}& M/ w- D4 \3 ~- q) @& K |% o
}
% ]+ g: |% r7 ?/ t, Evoid spi_init()5 T+ c# g0 b: x8 _
{
6 M; Z' z' e2 t6 v( v. | SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
6 v3 t- `: T( d( a" l. a SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,
1 ^7 ^; H9 a* Y // enable talk, and SPI int disabled.
% D" w$ R' L6 T0 z SpiaRegs.SPIBRR =0x006; //波特率7.5MHz
9 ~) P% B9 H' z1 i SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset% l) w1 t( C" U* m5 i
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
. U0 |9 w5 K$ y' Q* ~* ~" z/ K) v}0 Z8 a5 Q7 _: }
+ D& M4 t' p$ T6 Y8 @( ^
void spi_xmit(Uint16 a)
6 y8 W7 C& d$ r9 i{
% F7 ]! Q# c- U m SpiaRegs.SPITXBUF=a;
: B5 Q- {# ?: x, x" w- n+ E g$ }}; `, s4 d/ f+ h3 ~, _( a
* F/ a4 c" g9 N" \9 Uvoid spi_fifo_init()
# i5 e" C9 d+ f. h2 c% F{
/ P4 p$ {: o- X, k2 e// Initialize SPI FIFO registers7 ?0 V2 r+ T8 X& R, m5 z
SpiaRegs.SPIFFTX.all=0xE040;
3 a; w( U, [9 R+ Z! b s SpiaRegs.SPIFFRX.all=0x205f;
7 e" E7 n* P) e$ Q% G SpiaRegs.SPIFFCT.all=0x0;2 m, h0 u; c( n* X! X, w3 z' `
}1 T! t4 H6 X* F& T2 T4 G# S6 V( t
(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了) | |8 a3 c: z& n+ ?8 p5 e- J* Z1 v2 {2 T
* Y6 T' R( _/ E! k0 u3 j$ @
6 Z5 |+ K* o+ T0 t* [( t
8 u; d. Y H. S# z3 K: h8 v7 q6 B; c |
|