|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
8 ?5 S$ W% |/ K) _5 v- o5 c: ?& K3 l! Z8 S$ v5 ?/ p" p/ Z0 n% R
0 P; ^/ _+ J! T# s( {; P5 ~如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序
5 q$ i8 N3 W6 X* k9 G' @3 N4 _; ?" {* J7 r. \; N1 P
#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File
. l1 R. O$ J& \+ N; ?/ Q#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
' l+ }$ t4 F% X7 G6 |- ~; L2 O$ v. n' D; U2 A% |5 i- C
//#define LedReg (*((volatile Uint16 *)0x41FF))9 q: @* b! u0 F, `! B: r' M
//Uint16 *ExRamStart = (Uint16 *)0x100000;
5 D: o$ k% `/ ?
' I; X: i/ W5 S* Fvoid spi_xmit(Uint16 a);7 r, u. [7 \1 F
void spi_fifo_init(void);
+ E9 }/ s1 [5 d/ I' Y8 lvoid spi_init(void);
1 j+ ~8 Y; V0 D+ P! A, [7 |; E1 A9 e+ P* ]3 a5 I# B
void main(void)
- P" w. r. G) }{1 [6 l) r- \( d6 G- O( ?
Uint16 sdata; // send data
/ j& Y3 E, t% w7 N9 |3 c Uint16 rdata; // received data& s) b2 F) ~) [; z( R& {
$ M: m( x) o N/ M4 L, |: H
InitSysCtrl();
/ C; N9 `* c3 h1 \
, W" d3 g! _4 _
1 W+ t% e4 l. h* d0 s InitXintf16Gpio(); //zq
4 F& @6 [1 D4 |, n- ]9 u
4 m. k+ ^- Z8 l1 w K$ C InitSpiaGpio();2 t( I6 k# ~! B' B
' G( t7 ]( Y# `/ V* U1 [
DINT;
" S. F/ t9 p' t, A; N) x @. x9 q% z# v! _4 k- V
InitPieCtrl();
% L# r9 P1 o# B% t' l+ J" g( D: z8 O# v/ t
// Disable CPU interrupts and clear all CPU interrupt flags:! t2 E& G( J" M) P
IER = 0x0000;
/ V0 ^7 W l! r7 f% A8 ? IFR = 0x0000;
0 F9 N, M U$ y4 ~
0 B3 k& ?$ Q q! h# D InitPieVectTable();
; D. K9 s' E5 Z8 m8 ~3 o* G' A5 I* q9 ^0 w. W
spi_fifo_init(); // Initialize the Spi FIFO2 o; x" ]3 M& K$ X" @8 o
spi_init(); // init SPI5 w+ S1 h2 g: T1 ]( ~) s
7 {/ {1 K5 X% k. ^; v
sdata = 0xAAAA;
: `# H" c! t9 \0 H for(;;)6 E9 m# r5 p6 S7 i# s
{ ; s7 S- v/ W" C. i+ t- u* P( \
// Transmit data% Z7 O% H0 ^: o' \
spi_xmit(sdata);
8 q3 e3 L1 B m# |9 a7 k" y // Wait until data is received, _/ w5 T- Z$ }
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } . V, r( e" g* q; h# H/ m
// Check against sent data P8 R; `. z5 o5 t _7 i
rdata = SpiaRegs.SPIRXBUF;, ^4 s3 e6 k3 H& X. X0 w
/ w8 D$ e) Y; S! x# s8 m8 f' r: O
//sdata++;
. B D! p; Y% j* t& W% w
: i- A5 M% U' c }% ]5 B8 V' [7 n% i/ j( Z
}
! A4 s9 ?& g( ?3 q; q2 fvoid spi_init()
" w; g5 M5 }+ N* J, T{" t0 z0 N0 t/ ^8 q
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
% b D2 B! m+ o! G4 l+ k SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,
# G) p6 z' E) }/ a0 [2 L) P // enable talk, and SPI int disabled.& D8 [& N7 u' c- e/ d3 F
SpiaRegs.SPIBRR =0x006; //波特率7.5MHz
+ H4 f& C# {8 n2 R SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset
3 Q5 S# m0 X. o( E+ G; |1 X SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission3 J8 W0 k! e$ V' b- q
}
% b- S- x' e5 D! @
1 y% h8 Z j; t z- T) bvoid spi_xmit(Uint16 a)
. ^$ M0 n. J i, i H" X8 M{8 [# @; M" k- \- s+ f
SpiaRegs.SPITXBUF=a;7 P. L' \# F+ N2 K1 W. J: J& _
}
% U4 Y* @+ n' e: E5 }: ]$ V% Q. {9 r7 w+ b
void spi_fifo_init()) D3 y' B7 v( z* D' s t' w
{
5 T$ d0 Q, K, P// Initialize SPI FIFO registers4 s. N+ ^1 e/ w3 | y
SpiaRegs.SPIFFTX.all=0xE040;( Z1 I1 c; \ X% G% T+ W8 g' G; t7 y
SpiaRegs.SPIFFRX.all=0x205f;2 |' c" n9 c: f( O% j1 J9 Q/ Z
SpiaRegs.SPIFFCT.all=0x0;6 F8 \& Q; O& Z2 v1 o/ R, @
}
* b6 V- d1 B7 ^/ H- H(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了) |
1 }/ }2 z- U0 A, A1 E
7 o% k1 E+ e% ^ \. c* y* P5 U" U
* o4 I) Y j4 c' h' b X# Z6 b5 d7 {& B) e/ G1 T+ G
|
|