|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 K8 \( y r- W: ]) C/ D' w
0 }. b# `, r" x x2 [% O
0 Y* N, w' S% I! O) ^如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序
/ D( v2 y( [- y, w" o n- T% r' U) v2 G3 X2 U: Y& r
#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File* H, p; A$ Y, F N
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File* ]% K3 m# H7 f+ \* Y0 ~
u8 S2 i* Y$ ~8 z( u% e, }$ n2 u% K
//#define LedReg (*((volatile Uint16 *)0x41FF))
" c6 e4 s A. |' l//Uint16 *ExRamStart = (Uint16 *)0x100000;
1 Z& K2 `- ~6 Z& s! i& V) x3 d& u3 ~4 @8 X
void spi_xmit(Uint16 a);
9 A8 Y; c p1 }' y1 a1 D. Evoid spi_fifo_init(void);! b* w d' |5 V. l- G! E2 P
void spi_init(void);
% n4 A1 H4 [! \# I+ p/ u8 d- ^$ J# f3 y+ J
void main(void)
% b J2 n$ w1 I{
2 n: i6 U! x% r, k: G. j Uint16 sdata; // send data$ f, v4 Q* ]5 `& s, K0 a( k
Uint16 rdata; // received data
( m4 O4 C* s ~+ R
( o2 p: |" L. v. z( t: l& o InitSysCtrl();. E6 B5 j. W0 c0 |1 Z" X
, X$ Y; d8 v' i3 _
' c9 M" L; t1 Y- g4 Y InitXintf16Gpio(); //zq
2 t+ v6 C) F: A; M
0 p( I, F7 I J5 `* |7 F7 V s9 i InitSpiaGpio();! w. w$ b) b; {' H$ O
8 C" @' S. V5 J% y$ N6 ?- h
DINT;
$ a1 L" P' D& L2 `- t* s$ C w- Q, Q0 X) M& k2 Q, {9 u* O& V5 |
InitPieCtrl();6 s7 ^3 q4 R- Y$ C& H$ Z) B
* z4 Z. P# d4 t" i+ F2 j( x// Disable CPU interrupts and clear all CPU interrupt flags:
* Q' E" \; T6 n" w IER = 0x0000;
. \. R9 I& p( l) o4 m IFR = 0x0000; z G) p3 O/ q4 d" d& V c
% E& _9 F. P6 P3 h, u
InitPieVectTable();
3 N: s# B2 c: ]4 c, r! F: @$ |( f1 L
spi_fifo_init(); // Initialize the Spi FIFO0 d0 M: ]( n; s! i! A
spi_init(); // init SPI& M8 i1 a$ c: d% }: S- ?% F/ O
9 b7 v: F) Y9 Z* q2 S
sdata = 0xAAAA;2 s& e/ e; L) F5 x
for(;;)5 y; m& h O2 V* j7 b: I x. p
{
- @- W k# Y7 @ // Transmit data
+ w; h1 {. q9 a5 E J. I0 ~( }# Y# A spi_xmit(sdata);
0 T4 g; O$ p" [' Y+ f' m1 X // Wait until data is received2 `8 Q: G5 O5 k8 B+ ^
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } 4 _) }4 M1 `. L2 U4 I
// Check against sent data2 N6 W7 p) I# R# x" R7 h
rdata = SpiaRegs.SPIRXBUF;$ Q% r& N, B4 M1 l0 ^; [
* p, w2 U" I$ } //sdata++;
2 F& m- ]. |2 E% | {) J
# ?, z$ i, I4 F; ?. l }. E: [5 r3 w% p6 i. d' B3 o
} % h' O9 L1 H. B2 K2 J+ {
void spi_init()
9 }( `1 P5 a# l' F5 `, \( f- X{# Y+ c$ b. O2 H& {
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits8 m G! `$ M3 q
SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,( W% E5 ]& M% ?6 M* w- a
// enable talk, and SPI int disabled.
- F/ u9 }. y* R( ~ SpiaRegs.SPIBRR =0x006; //波特率7.5MHz
+ S5 |4 \- t4 l2 p6 A& d1 D SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset
0 ^1 J# X& {( i" l7 a( l: ~# j SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
0 l6 [" _: c* n# q}+ f# {) s9 b2 U# Y9 B2 x- z
2 y2 s' h9 f2 {+ j" [2 d
void spi_xmit(Uint16 a)
7 S) j* I( ?9 M, J+ n2 l9 X/ \{3 g8 e9 s- ^1 d# J. x
SpiaRegs.SPITXBUF=a;
4 Q: I L( r3 k' Y8 s4 c3 x}
# n$ z3 p3 J6 i+ u* H! P6 W8 _- `9 k- Q/ m5 I: q1 k F' Z8 B
void spi_fifo_init()
+ N6 l5 @3 x% F! S: f& J{
( R5 ?6 X _& S( \* j* E) O$ L// Initialize SPI FIFO registers
, y' p' M+ m/ P; Y9 m SpiaRegs.SPIFFTX.all=0xE040;
$ U' s( T0 s' }, R, m SpiaRegs.SPIFFRX.all=0x205f;+ y4 M: f N' O7 S9 X
SpiaRegs.SPIFFCT.all=0x0;
! A) Y! R- K& Q( D2 ]}
' r0 T7 ]$ y1 N q(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了) | & d8 P- X, l6 }, |8 Q! [* |. t
& |3 q( A) p2 F( q, M) B
/ s6 A8 i2 w# |! C8 P, g6 w7 U1 b1 _4 ^, |8 t) y1 a
|
|