EDA365电子论坛网

标题: F28335 SPI低电平为什么是2V? [打印本页]

作者: 蔷薇123    时间: 2021-6-25 10:15
标题: F28335 SPI低电平为什么是2V?
) e# q9 M& D3 H: |; N' y: [

. t% A. D' X6 E! h; |  Q7 p3 c
5 i* c2 e+ g# Q: l7 ?
如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序3 u0 c; l! Z8 f8 E2 E9 v
) q% a: l( q" n
#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
, H2 V5 t$ P0 `1 d6 R! [* \( n#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File1 ?! N& F! B, H4 ]% q

  j' Z% E! |& ~( V2 B//#define          LedReg        (*((volatile  Uint16 *)0x41FF))9 }: X1 }2 W  V5 B
//Uint16    *ExRamStart = (Uint16 *)0x100000;
( c9 g( H  A+ w# H* W  K. F9 U. u, k; z& h+ j! I# a$ N
void spi_xmit(Uint16 a);8 X4 r& c7 p& l0 @! F6 h  d
void spi_fifo_init(void);
2 k3 A$ R5 o) {% @9 I! Dvoid spi_init(void);
) L/ Y2 I5 a! f: D
0 |5 _, O2 d# m& l+ w! y( Jvoid main(void)
/ y6 _2 o2 K+ i) V* I* g" J! j{
+ \' u+ U) j, K% h* B   Uint16 sdata;  // send data
, \7 H" h, A6 f   Uint16 rdata;  // received data
) V* X4 p' m: v
' Q" s! F/ [+ h8 m0 i$ v   InitSysCtrl();
+ |! ?/ {/ ]. y: D
! a2 S4 |6 P' l) U  ]% h* I* [# H$ p; P+ B/ r6 E; d* Y
   InitXintf16Gpio();        //zq" {- ~2 y5 q! C8 @" q8 k
, L9 r6 d# p; j+ L. a# d" i
   InitSpiaGpio();
. T) s! |" }0 Q. g/ Q- W* S2 y- l6 |! `$ i, h
   DINT;
. j* e+ [- i, h6 Q5 q  h
+ Y) ?' z! G8 B2 Q0 P& z* S3 i   InitPieCtrl();( z, w2 k  t! ~6 W. p7 z; V1 c4 ]

  a1 o! `2 @* Y# r// Disable CPU interrupts and clear all CPU interrupt flags:
/ y* t+ I7 }) f% x   IER = 0x0000;- Y. A) {, ~  j' ]1 ^# _
   IFR = 0x0000;# B" f1 N( H* `. `
   
, X# p7 D1 n) i& Y6 ^! m   InitPieVectTable();; }5 O) a3 f1 {  P/ P5 c
  M& J/ i  p8 o( {
   spi_fifo_init();          // Initialize the Spi FIFO
- G8 H9 L4 h! B& ]8 d9 \   spi_init();                  // init SPI
5 w: K9 f/ {. n
! E/ |6 u/ \$ n   sdata = 0xAAAA;
. z0 B2 L; ?& W# E   for(;;)
0 C7 v6 T$ {+ t3 B8 {9 F" b3 H5 x   {   
, G0 i) h* e2 b& j     // Transmit data
# o8 T2 u8 i# }/ a: Y! f6 ~        spi_xmit(sdata);6 ]+ x( {1 {1 h1 C& f+ L3 `8 G  v
     // Wait until data is received
; F- g$ ?+ g# k     while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }                        
+ j( F; ]- ~, i; ]     // Check against sent data- ], r2 o+ |7 O( {
     rdata = SpiaRegs.SPIRXBUF;
* ^" b' R! e! d, ^/ w, N% l4 f     ) {' x( X9 Q% G* r( i$ m
     //sdata++;6 K+ B! u; B& d
( K5 ~; p& z! P; o$ ^( p- q
   }
# {+ y; j' h- W" ^* A& h! Q}        7 _1 U* {/ E' B3 x. ~% e: W2 g  }
void spi_init()
' K% R# e+ C9 ?( j8 J{
* i; w  P% y3 {8 v' \        SpiaRegs.SPICCR.all =0x000F;                     // Reset on, rising edge, 16-bit char bits1 h' P8 w& e' @8 e. K# \8 ?' J
        SpiaRegs.SPICTL.all =0x0086;                         // Enable master mode, with phase delay,& T6 S) x- `3 o! H* I3 e
                                                 // enable talk, and SPI int disabled.5 a% v1 @8 i6 ?" U: E
        SpiaRegs.SPIBRR =0x006;                                        //波特率7.5MHz9 F# ?$ F+ X; c4 ~  Z
    SpiaRegs.SPICCR.all =0x008F;                         // Relinquish SPI from Reset
2 @- x  p: a, c4 H. U    SpiaRegs.SPIPRI.bit.FREE = 1;                // Set so breakpoints don't disturb xmission: Z  S7 }3 E3 _) o2 [# u! @: b
}
, q( s, b4 }5 c- r0 `% R9 z3 o( X/ _! S
void spi_xmit(Uint16 a)
; r  }8 D( r! i{
; h- [/ _1 @3 |( m; D4 U0 H* ]    SpiaRegs.SPITXBUF=a;4 c* K, k% o, r  J3 B* q! [
}
9 W1 Y, Z0 S, e5 d5 z/ K" |! f, Y& V. o; i* [
void spi_fifo_init()
4 F% c6 k) j$ D- a' G' g3 U2 W% M{4 {" h& Q( V$ B% q& K
// Initialize SPI FIFO registers- R0 h5 j$ m8 r" }7 A
    SpiaRegs.SPIFFTX.all=0xE040;- E) e; _3 D5 B
    SpiaRegs.SPIFFRX.all=0x205f;
5 X7 p9 Y7 e  r- N$ c+ O    SpiaRegs.SPIFFCT.all=0x0;/ |2 p9 b2 s3 \* [0 i3 n
}! D4 P0 v/ _- Y! i+ M$ o' |
(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了)
( Z+ R! X* ~6 o9 W1 ]! |. D5 S

; x& h7 V5 S1 J5 P" l; D$ U" M7 F
2 w! ~  |+ J5 q  }' G- \" m8 V

% F5 X  N' w2 W' x; d+ s5 c2 e: E
作者: modengxian111    时间: 2021-6-25 13:10
肯定不是5V  你看看硬件上哪儿加入了直流分量没
作者: shapeofyou888    时间: 2021-6-25 16:14
我调试CAN也遇到同样的问题了,低电平进CANRX就被拉高到了2V以上




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2