|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. `2 ]! U6 w0 B4 Y% q# g8 v2 m) F1 U: Z
7 q1 T- g: r2 d如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序
' Y3 X. T% v* P1 L
# ~/ p {) O" e8 Q6 p#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File
! p) m8 }' g4 B- ]( d3 d" \#include "DSP2833x_Examples.h" // DSP2833x Examples Include File6 K& T0 X! h3 V2 l- V! q! _( G
5 x7 n4 j- R: Q7 G5 e% `2 O: H4 u//#define LedReg (*((volatile Uint16 *)0x41FF))% R6 i6 j, H- Z& j" a
//Uint16 *ExRamStart = (Uint16 *)0x100000; t+ v" }0 q7 z2 _/ N$ v
4 {& S5 B4 L# P* r9 E
void spi_xmit(Uint16 a);- L) u, x8 z8 l; S& ~
void spi_fifo_init(void);
& U# ^% X1 g8 F1 H4 Vvoid spi_init(void);
( k0 Z- U5 f! K1 c9 S( ]
/ g! t3 b' d8 i; y+ |7 qvoid main(void)
, K) |9 u4 }# m0 \- y{+ E% m0 ?$ ?6 v/ e" w0 _
Uint16 sdata; // send data
" D& Z, [, R9 M: q Uint16 rdata; // received data
% G \8 t1 _3 Z i. @# Q$ \2 A8 \7 }4 g
InitSysCtrl();# K. C8 g) U# T0 |4 w
$ g$ v& o+ a: I& l; ^7 j0 o( O
( R/ V4 m" E$ X r( A
InitXintf16Gpio(); //zq
5 j' c" m, d# q% X7 o6 W8 F: ^
5 J" W$ H* b# Q9 Z InitSpiaGpio();$ x3 ?' _8 z/ H& [
& p. N3 t/ \) r' p) b DINT;
5 g* e, e7 |# l8 g3 y9 U
" |8 X' X; M G9 e V InitPieCtrl();
. W7 S; _1 n1 x# e1 F- s( U, E
0 O1 x3 \4 S# |. v6 U// Disable CPU interrupts and clear all CPU interrupt flags:0 L6 p) i! m F+ n( A3 Y% d$ L
IER = 0x0000;
! Y) z. v3 ]! S4 y6 x8 K7 W& W% J IFR = 0x0000;* V9 x- j# T* j u7 f, X
1 X3 h' |2 ?8 ^: E InitPieVectTable();2 O! p5 r* q: ]4 D/ O8 R
" `. b% l/ p$ I& T$ R" h6 O spi_fifo_init(); // Initialize the Spi FIFO
, A; M; {; Z2 o* E spi_init(); // init SPI
- g: ]5 `/ @4 \; W7 y
- s- `. b+ |: a `/ e7 ?! y sdata = 0xAAAA;
; ^2 y1 j. w" i4 v for(;;)0 ?1 R. M4 v( o C8 V) E8 j
{ * L/ Z( r( A% F8 A7 ^( }) m
// Transmit data
2 T$ E2 i* X! l$ P9 E spi_xmit(sdata);
8 P V: j% K4 m) M8 q4 c4 p // Wait until data is received# F" @$ C# S2 e$ z1 u
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
# @* Q% C& C# O: |1 c7 s // Check against sent data
- }9 o2 |/ o" I9 E. d( p+ n3 P+ d3 P) Y rdata = SpiaRegs.SPIRXBUF;. s8 [9 x" L: W% g: {
1 i- h% x$ G/ I" h4 k
//sdata++;
& R! x+ l ^0 U; ~% u/ K+ j+ d! I+ x$ K" d: V- s _! X
}
! U! K* d, K( Z$ W6 o. H} ! x( t' X' h5 M m! E
void spi_init(), Q5 Y0 T0 v( g+ y; m6 P; E
{8 l8 j# S0 v9 \( c! U: K, h+ j
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
/ \1 E2 K% B* c' O7 q; v: o SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,- k' y0 p! c" d. S
// enable talk, and SPI int disabled.
_" } c; q/ ]: l/ W SpiaRegs.SPIBRR =0x006; //波特率7.5MHz& |7 r P7 Z- T6 N1 w
SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset1 m1 K: P! F4 ]( q4 I9 Q
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
3 ` A: e6 _% f* J$ ~}
# U% g: c _- o: F. G! _* Y8 ^" j9 J( F1 [; h0 Y, J% `' w
void spi_xmit(Uint16 a)
+ A/ ?1 y5 ~% b{" M9 X' O( J7 u
SpiaRegs.SPITXBUF=a; K9 i9 p5 B x
}* I. @, ~' w' C9 s5 T# }1 E- F
8 v! r5 a1 w0 u4 h ]
void spi_fifo_init() {- c/ l- |# {% z2 i2 C8 I$ R# E
{( u5 O$ D, K" U/ N2 s( T: g
// Initialize SPI FIFO registers! V" m7 Z1 V/ y2 A) x. ^
SpiaRegs.SPIFFTX.all=0xE040;
7 T4 _" m) I: t: g+ B6 e; _ SpiaRegs.SPIFFRX.all=0x205f;
% S! M [& k; t7 m& Z SpiaRegs.SPIFFCT.all=0x0;: @3 ~, W9 t: W4 H# x' o9 @
}1 D: g$ p2 ?. j) @
(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了) |
3 q9 o! F( i* U( t9 c2 [$ z0 P/ o' | B6 u+ {9 J5 S% C
( w$ C0 z+ Y- d: g+ ?$ Z
9 U* X1 S6 {; _/ M* K8 r |
|