|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如题,我用示波器测量SPI的波形,高电平是3.3v没问题,为什么低电平是2v?下面是我的程序$ j6 h1 P" m3 R6 a
B/ k# x1 n# x7 Z; ^
#include "DSP2833x_Device.h" // DSP2833x HeadeRFile Include File
+ A, i$ L4 v0 D9 P* M6 M#include "DSP2833x_Examples.h" // DSP2833x Examples Include File8 |( d; l; m; I# C- p
7 b0 W; J$ X; O1 {3 k% ]' Q//#define LedReg (*((volatile Uint16 *)0x41FF))- s& j) m V% W6 y9 n
//Uint16 *ExRamStart = (Uint16 *)0x100000;
, a( W* V6 a D) {0 F1 v: o. F# F0 {% n: _7 y
void spi_xmit(Uint16 a);
v: ^ |. C0 q$ D6 X! a6 w. xvoid spi_fifo_init(void);
0 V/ u3 ~1 [4 E; mvoid spi_init(void);5 u) J& M$ {2 d+ t S: z1 r
& L T, n) `" K* F) i- Xvoid main(void)
8 k. h% E6 U/ f/ c; T{$ ^' q) ?' L, E% ]( R
Uint16 sdata; // send data
! o9 a* M ^4 D* ]: W Uint16 rdata; // received data# y. Z, ~# i! r! r4 i7 H2 }
% y- A+ _6 I2 O1 n! i/ T) n0 s InitSysCtrl();5 H8 H% s- W: t0 S3 f4 P' N: N
/ D9 W+ v+ D. h9 h9 M8 ^# D
5 R5 N' B3 m" t* I& p2 s. P+ E; Q
InitXintf16Gpio(); //zq
7 D% p, E3 i: G' |) d `, f8 F( h2 ` w, c% k6 q- E+ h3 [$ L: W
InitSpiaGpio();; B( `! m* L1 d) u/ p! W- F1 z: _
! v2 o+ c9 t4 z. X DINT;% \- a& n! r9 U, }
, [/ F* d! e. C# Q( z
InitPieCtrl();
( y0 _* @+ x6 |( q- ]3 `8 B& j8 r
// Disable CPU interrupts and clear all CPU interrupt flags:! c' w' H( N' X' R7 E# d8 E
IER = 0x0000;- ?/ L0 W3 h6 T7 n$ K. Y$ C
IFR = 0x0000;/ a, E3 a; T( P
' q8 j4 H) S1 i$ }9 o. O/ l
InitPieVectTable();
! q0 e# K, a& w- P" m3 R/ F/ c* }( N# T9 K6 F( k b/ K2 o% }7 U
spi_fifo_init(); // Initialize the Spi FIFO
3 w' @2 k; c4 c- Y/ K9 Y. L spi_init(); // init SPI
' k% h) r' x G, C+ c) m* T: b( R, B" `2 W
sdata = 0xAAAA;& a( {) R! E7 _, p! I$ A, e
for(;;)% X* ^7 ?0 t1 J
{
4 r/ O x; t* [8 d // Transmit data
6 H- E3 f' P$ q! v9 ?0 q spi_xmit(sdata);: @" c; j" S) \* k, }/ b
// Wait until data is received1 l" g9 Q4 H. l# [# W# h* L0 A! j
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
. ]' q; K$ r* t# {4 D8 C // Check against sent data
- N$ d6 s) R# x! o1 [ rdata = SpiaRegs.SPIRXBUF;4 H+ z' [( F$ R: t% l# {/ v8 F
5 J# S" y) b( X8 @/ W* d
//sdata++;
$ r- J% W6 u2 B8 w8 N" E/ i
# D0 U0 F8 E' {/ h2 S }1 I. s. u9 ^$ s
}
& c; k$ W2 H: v6 J$ Cvoid spi_init()
! l; a: R+ R& r* k1 U{' A! a2 Q9 ^4 \, {+ C+ R0 z- u, o
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
5 `3 Y) |5 F. L4 W7 T6 L) e* S* s* p SpiaRegs.SPICTL.all =0x0086; // Enable master mode, with phase delay,# N# p; \5 x @) m6 ?
// enable talk, and SPI int disabled.4 c5 h- U! k$ n8 D
SpiaRegs.SPIBRR =0x006; //波特率7.5MHz
& G2 u5 v: y" q. @6 t; e" r) Y SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset% W5 C; t* `; T, h% a, ~. E
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
5 S* o. c3 S1 D}; [+ i0 U# H/ k/ A7 M$ |' q8 Y
' ~, J5 S. a5 _4 ~; k6 k2 V6 ]3 uvoid spi_xmit(Uint16 a)
& A4 o! {! C( [; W{# w$ a ~9 G9 l8 D, y Q# [; H: C! n
SpiaRegs.SPITXBUF=a;
' [( H9 y9 M9 h7 k: b}' h0 m# P, t3 o; j
) L* r( k" h& ] t: [
void spi_fifo_init()
* {% R( Y6 h9 {{
( m7 I# M8 z2 H& C# p* ^// Initialize SPI FIFO registers
/ Y! O# ]* i; S4 v8 L. ^- T: @ SpiaRegs.SPIFFTX.all=0xE040;
" O* D( s# i* U0 ` SpiaRegs.SPIFFRX.all=0x205f;5 c% A/ \) f' r$ j
SpiaRegs.SPIFFCT.all=0x0;
/ e( ^/ K; z- b" Z% L}
7 V4 D2 c: Q+ _! {, f* S7 y( U(顺便说一下,f28335的芯片资料上SPI波形的高电平不知道为什么是5v,是不是错了)2 H L) r0 w$ K5 j' B5 _: ~( Y
|
|