|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 h. S' F1 O; q, j- u
9 A5 {5 X# @7 J1 c' a7 Q
5 H" p ~/ x9 |; A如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序, @9 @+ J/ v; c6 z: y/ O
: j! E) X' l' L" E+ T: Z6 o# ^#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File
" Y p8 E0 |- j2 [# K" t3 r4 I+ S#include "DSP2833x_Examples.h" // DSP2833x Examples Include File5 x: a, d$ M6 Z; U
% A* v/ `3 }5 ^& e n, P9 T; ~
//#define LedReg (*((volatile Uint16 *)0x41FF))
" f2 W6 B9 \' d- _: V//Uint16 *ExRamStart = (Uint16 *)0x100000;, [1 t% n+ w3 _( Y( Z) Q7 J
# P9 m5 _' T- j* Q% L
void spi_xmit(Uint16 a);
6 |! X0 ^3 [$ {# T1 e- c! F" ^# zvoid spi_fifo_init(void);4 g4 [2 e" }6 f9 |
void spi_init(void);( }* @% y. a7 P( q9 F& e
1 C. W" A/ z; O
void main(void)
0 b& ` r% A" [* q6 l{5 M7 q7 p0 o/ q/ L3 ?
Uint16 sdata; // send data9 ?( \+ W2 `; J
Uint16 rdata; // received data
+ G) M6 _0 m; F* `$ c9 t7 p$ t% h$ |0 _8 `: P, H) l+ g
InitSysCtrl();
, ~. z4 z) X( m4 D. G8 `/ O
! _- ^: l- _! z1 z1 f4 E$ H/ G6 d7 ^% t9 Z9 G: Y. X
InitXintf16Gpio(); //zq
8 r6 ]6 P1 `4 u- n: |6 d/ q) A
3 C' B( X6 R u% ~ InitSpiaGpio();
0 o! i4 C) |1 W+ V4 d
. ~/ P* f( U8 B8 }4 q DINT;
# ~/ A4 F$ ~+ T% K$ K5 O& k) f% t3 z' t& P0 }4 Z
InitPieCtrl();
0 j1 \9 r8 K7 d* p8 f6 T" l- ^0 q
+ ~5 a M3 I$ o2 e// Disable CPU interrupts and clear all CPU interrupt flags: _8 O- z* k# \2 {% Z; q
IER = 0x0000;
3 J+ P4 J$ ?1 J2 ^9 h6 A' F IFR = 0x0000;9 S" u8 T* `! w6 B
& `) U9 F4 q0 i, y' O
InitPieVectTable();
# E+ e0 b5 d0 b c9 _
2 x) m% S; }/ Q3 U spi_fifo_init(); // Initialize the Spi FIFO
) `9 u, Q% Y/ l' x. m: D4 @ spi_init(); // init SPI
4 S, `8 m4 j3 A! Q0 f% ?' t( Q. x( l6 v, z2 ~; U5 i' H) R
sdata = 0xAAAA;/ i; c" E% H# M" N4 E! m
for(;;)+ H+ U& m$ T) k5 ]
{
& u$ I% B8 F0 X9 _ // Transmit data) z4 Y' n8 y+ ~! Z$ h
spi_xmit(sdata);$ [, U5 s. v/ H( Z7 @3 S
// Wait until data is received
- Q3 R' {. u1 k, ? while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } % x% u9 y: x% Z; Z q
// Check against sent data" t# N. C U( ^$ d/ A' j; Z
rdata = SpiaRegs.SPIRXBUF;
0 D+ w. b2 y' J( I
- t4 e, L* ^5 l$ v4 `: e //sdata++;
O3 Q1 _& N5 `7 \% d' ^: y; }7 l% y u
}. f( v1 V% o$ Y
} & D0 a; D( [ B& _$ Q* Z3 @
void spi_init()" f. ^: `9 X" Q
{) o) U0 F; n% U9 T7 D
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
2 O/ t& ^0 ^: M SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,
0 l# h( b( q- L+ d8 |5 y // enable talk, and SPI int disabled.7 K) O& V( K) I5 C; B! w
SpiaRegs.SPIBRR =0x006; //波特率7.5MHz
5 d5 S$ f" L. r$ N! c SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset- I8 H$ w# @: D K9 n7 O
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
. c1 v$ j2 [( C$ q* ^5 \0 W0 A}+ F& I' C1 Z0 C0 E
- N* f5 F# g7 ?# E
void spi_xmit(Uint16 a)" E/ @- N6 {1 e0 c4 }
{1 a3 j9 l* L/ `1 I$ ~( Z' J
SpiaRegs.SPITXBUF=a;; o% t# y) _; J- i
}
: B# p6 H. B, l2 E
! \% s# M. {& m S4 X wvoid spi_fifo_init()
9 Y# J5 E4 X. ?# n& v9 F* e/ @{
1 g# E) b! V5 j ^' l// Initialize SPI FIFO registers S$ w8 _& G2 [; m" `3 {0 p- W
SpiaRegs.SPIFFTX.all=0xE040;
' N/ `# }$ h$ {! O, N# ^ SpiaRegs.SPIFFRX.all=0x205f;9 g5 u- q, B& \' a
SpiaRegs.SPIFFCT.all=0x0;
: z5 W1 b* Q- L8 R- T6 {}
4 |4 L# Z' _+ O& P0 `' N# ^& @. [6 y(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了) | ( {( @1 f8 s" @6 J
$ o3 Q5 W* h& `2 P$ [% m c
5 X& I8 @+ o+ C, _0 m% @& w
; U3 I9 A2 G8 g# n |
|