|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序5 w F- j) T4 E+ i
- O- d; R3 {9 N6 H* A#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File
; i% b5 [2 p4 S; \#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
+ j1 c, v- a7 a6 ?- l$ i& [
3 c0 C* A6 D* Z- E+ ~//#define LedReg (*((volatile Uint16 *)0x41FF))
" v4 X1 r/ Z& L//Uint16 *ExRamStart = (Uint16 *)0x100000;
: Z: O: z% j1 {1 }7 ]4 ]6 G X: O+ I6 w5 n3 t" a: g( E7 V
void spi_xmit(Uint16 a);
# x% y: n+ s, _! hvoid spi_fifo_init(void);
7 ] o) J3 L7 M% H9 X' B1 m4 Cvoid spi_init(void);
" E4 s$ T! P; c. x+ H% G
K# s: T6 R, B6 v6 c r& ]( \& Nvoid main(void)
( k- N9 s7 n$ \2 ~- t( z+ o{
; O) [& A: d5 R$ O Uint16 sdata; // send data
6 B% l4 o9 p n- O9 d- ^8 I6 B" j7 y Uint16 rdata; // received data
! t4 e: y* c% I6 a/ k8 {
! O5 ?- X4 k4 j7 K0 h2 [* Y, n8 S InitSysCtrl();/ ^1 Y" O0 V3 j- o! T6 w' U$ W
& W; Y9 s* e" h q5 k
& @. m/ h5 F: r2 Q InitXintf16Gpio(); //zq/ I( M7 b+ F6 x/ `- m
, i" `# k& p& U8 E, ?# W InitSpiaGpio();
: s0 l' [# U9 @
s c& i( M- ~# | DINT;
* r/ d! W) n5 S( i& {/ I- k( g+ g/ s
/ |! r6 T6 ^$ x% m InitPieCtrl();4 M: n+ D- W) N6 ~- g6 ]
& s3 X' q) {5 y. A% {; S9 f
// Disable CPU interrupts and clear all CPU interrupt flags:$ t& T% |7 f- Y8 f7 k; ~; O
IER = 0x0000;! b% l& X. K. i& o* j
IFR = 0x0000;
j3 k4 ?1 g# x! Z
# D) x" V* P, P7 v; n; ? InitPieVectTable();
: ]5 a0 ^ q6 s/ t7 l: }+ @" w) v( j5 i
spi_fifo_init(); // Initialize the Spi FIFO/ J/ C% H. z' G9 B
spi_init(); // init SPI
: P3 W/ J( s! W/ a! V: b
- Q3 ~; q% n5 s# c sdata = 0xAAAA;; w$ J6 ?0 u9 n5 k# N2 U; U' t! R
for(;;)
& a+ ]) R. W+ @2 o; a {
3 Q5 J" w) K4 q6 e" w- U7 i // Transmit data) E+ U8 s& X: F
spi_xmit(sdata);$ @5 n. @0 n8 a1 d
// Wait until data is received. y2 D, u5 L8 G) v0 k# s
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
9 D% Z @+ V; p9 t // Check against sent data
) [1 _0 b4 I9 f7 m4 `8 D rdata = SpiaRegs.SPIRXBUF;
/ p* |5 q" b' k/ I9 ?0 D
+ ~) O( Y1 r2 L0 b //sdata++;
. c. f' z6 o R) w4 a7 b; Q; l/ y& b# `" R3 l7 U- H& c
}# X6 X [* q! ?1 s( d1 f$ B7 u
}
+ Z/ k3 C/ }0 r. _; c6 i8 H7 kvoid spi_init()
. I. M$ |* k# Y# P( h$ V6 @{+ h* @' P) ?; h' X
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
1 x& }; j$ t7 d$ X SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,
; m) p3 n% a) ] // enable talk, and SPI int disabled.
' F5 z/ p/ p0 r- V) Q SpiaRegs.SPIBRR =0x006; //波特率7.5MHz
1 j- K. c, e6 j6 X2 ~9 f# J5 t1 F* J SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset
4 A; C" M9 Q& u$ F' x4 ^0 W SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
$ h" K& a" p2 x}2 X; Q3 Z! E; C+ L4 }
7 A; x) _3 O7 I! ivoid spi_xmit(Uint16 a)
) _( Q7 O/ n% a4 [{
' R4 K) B9 Z9 W1 ]0 R SpiaRegs.SPITXBUF=a;
, h# ^; N" s" t/ L; i' s}& F$ V) r9 W2 a
. C1 D9 ~$ ]5 {* g! O6 _! W! Hvoid spi_fifo_init()/ V( t2 N4 G4 X0 w Y8 a7 M0 A
{
* [( z6 g$ d' @4 {% `+ R2 q// Initialize SPI FIFO registers/ R7 H# Y3 j7 K
SpiaRegs.SPIFFTX.all=0xE040;& n4 C8 ~: ^6 v ]
SpiaRegs.SPIFFRX.all=0x205f;9 j& B+ c' R7 k0 S; z5 ]# T' `6 l4 K
SpiaRegs.SPIFFCT.all=0x0;# j1 t1 l# u" y% ?) I! r" r
}! H" l/ W1 @6 n) B
(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了)
% W0 p, ]7 S/ H% j' k, X* F |
|