你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8-SO8-DISCO -- 11、STM8L050 SPI输出测试

[复制链接]
TLLED 发布时间:2019-2-21 10:47
! @8 b) j/ D5 ^2 s
    测试STM8L050 SPI输出测试& e4 ]& f( |4 C" [
   
; @( w* [) ], t) q    一、端口配置:
" J. m; j# S4 E4 r4 E& U    5 ^2 A& G+ V5 @, F) R5 B5 U# e. |
    使用STM8CubeMX来查看SPI需要的引脚% d. f+ I, X- z. C- O+ b
    1.png
2 c* b& x+ u& q$ s% ^7 A5 j  
& Z# O. D6 c9 `    二、程序部分
8 c; [/ X( R  F+ O. B    . G9 U' B1 }" w- @. W+ ?2 b) O
    2.1、SPI程序
& D/ i+ W$ i1 R0 k7 G. i
  1. //spi.c
    3 q9 n& H9 F) Q; u7 A( `; u  c
  2. #include "stm8l15x.h"$ y: \9 g0 L# s4 F6 T

  3. $ U2 P- h2 `  q  \; R
  4. void SPI_FLASH_Init(void)
    + E1 e+ A( ~0 W; i7 L9 ?
  5. {
    , h1 }2 R+ X9 C- Y7 c( D+ W) b
  6.   GPIO_Init(GPIOB, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast);   //SPI_MOSI6 @6 l4 [+ m$ j; \
  7.   GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_In_PU_No_IT);        //SPI_MISO/ r" k9 V  G7 P% U8 k" h
  8.   GPIO_Init(GPIOB, GPIO_Pin_5, GPIO_Mode_Out_PP_High_Fast);   //SPI_SCK
    $ Z: R" R9 v) \: b
  9.   
    * |' }7 C5 w4 `. g6 t
  10.   CLK_PeripheralClockConfig(CLK_Peripheral_SPI1, ENABLE);# p. r+ P; C  p, J/ L
  11.   
    5 f7 R0 N9 s, z: D. z
  12.   SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_4, SPI_Mode_Master,\
    . A0 S7 k) c" p7 i
  13.                  SPI_CPOL_High, SPI_CPHA_2Edge, \
    3 p5 b( i3 r* F0 u' K
  14.                 SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);
    3 h! ?- m: O8 o$ Y: ]: l5 _& L
  15.        
    ( b! c/ J$ ~- g  @3 f% A- K2 |
  16.   SPI_Cmd(SPI1, ENABLE);        /* 使能SPI */) C5 z( q  W- x3 Q7 A
  17.        
    % N9 k6 z5 j5 K) @5 b
  18.         /* 配置CS管脚 */
    4 \/ c9 U+ k: t+ P( h" e
  19. //        GPIO_Init(SPI_CS , SPI_Pin_CS, GPIO_Mode_Out_PP_High_Fast);- `( F- l1 d& e  h7 T! F
  20. //        GPIO_WriteBit(SPI_CS, SPI_Pin_CS, SET);                /* 拉高不使能外部SPI设备 */
    4 I5 J+ G! _, ~. w( ^$ e
  21. ' g9 A4 w$ a2 A
  22. }
    ! L6 s( V$ {) @6 ^" W5 }" \5 q5 z

  23. 1 @  d4 D. P# n0 y

  24. # N+ @( l6 F5 I. U( g
  25. uint8_t SPI_FLASH_SendByte(u8 byte)' H: U4 L0 p2 P' @
  26. {
    # m* z' U6 O5 m. U
  27.   /* Loop while DR register in not emplty */
    5 |, {. q' J+ v4 x% i( K' Y
  28.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);$ V5 g: T% }/ ^$ p! |) g7 C* ^
  29.   /* Send byte through the SPI1 peripheral */
    - q- n6 g" B3 b
  30.   SPI_SendData(SPI1, byte);  N- c% @  J2 w  t6 N
  31.   /* Wait to receive a byte */) _. x! `* p8 z( x) N( X
  32.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET);2 C! L2 y& S- t9 k2 P! s8 ~
  33.   /* Return the byte read from the SPI bus */* j9 I, u1 H+ L/ ?5 ?, G
  34.   return SPI_ReceiveData(SPI1);         8 Q1 [/ z# D8 p0 s
  35. }
    6 q0 o& B& k8 S- W1 V- A% n
  36. //spi.h
    : [2 F. f, Q7 x! I3 V  o; O4 g  T
  37. #ifndef __SPI_H$ D# Q. @+ F0 O8 k  F9 O7 @2 `5 S
  38. #define __SPI_H) B, A3 p% f$ B% I. L( h
  39. ) l! U0 I2 \( W) M4 ^7 T# D
  40. void SPI_FLASH_Init(void);% B1 {, R/ m* K: F( m4 L% T; m& p
  41. uint8_t SPI_FLASH_SendByte(u8 byte);
    ! X' R. O% X) V

  42. & y7 Q: i6 }% i0 f) [; U! a
  43. #endif
    $ F- k. I/ ?% L
复制代码

6 D* E- A& I  e$ F: D1 S  |1 }% K    2.2、主程序. h6 F5 J" M* [- q8 b0 A
  1. void main(void)
      _, h4 V. q9 x- k+ |7 f  |8 H
  2. {
    ' Y' i& p' n. L: e: T

  3. & B! {2 i- k. z3 h0 @6 l/ R$ M
  4.   CLK_Config();           //时钟初始化2 f4 Q9 C# P# Y- i& [
  5.   
    . i) N; [5 U  H  F' ~5 s$ L5 |
  6.   Delay(0x2fffff);        //延时5S             # T3 T, z, e8 d$ V( j+ t& T
  7.   8 l8 [1 Q9 p9 A: X
  8.   //led_init();             //led初始化( W, _7 b2 M$ V5 Q: Q$ Q+ n9 I0 o: e
  9.   //swim_init();( f; H6 j( w) g8 u- C
  10.   uart_init_halfduplex();1 T! o, V9 p9 F' @( R
  11.   
    . K3 \$ `8 S3 N% Q; b' I1 t
  12.   SPI_FLASH_Init();; o8 G. g' r* R' r2 i  T
  13.   
    5 Y1 a7 j# ~; ]9 y$ b1 |: L
  14.   while (1)& d+ C+ A! H  g# I  A/ B
  15.   {
    : p& t5 G( [2 N0 A. }& H/ H# r
  16.    
    - b% o' q1 c& X& R8 }7 F# ^5 s* K
  17.     SPI_FLASH_SendByte(0x55);2 J1 K: N. w- m, ~- h
  18.     Delay(0xffff);
    1 M" Y' `; o+ h2 g0 k6 p
  19.   }
    , `! P+ [' Y0 D4 X3 B; t' O- M- r
  20. }
复制代码
% ~9 J: n) J% ]+ g( r
    三、执行结果
! J3 J1 g9 R" W' k9 c& @7 S% I  y9 f) G! O5 p
2 p$ x) S* t% r
    手头上没有SPI通信的器件,使用示波器测试下,SPI_SCK和SPI_MOSI波形:
3 u" U+ C9 b8 l3 X5 \: X+ S& }% P1 g    黄色:SPI_SCK6 [4 u) M# n1 N9 b
    绿色:SPI_MOSI
7 ?$ N0 h. u7 G$ c( R$ e0 s5 ~# K    SPI发送的数据是0x55
! o6 i. v* S- ~$ k3 W; z    2.png 8 l0 z& Q9 g5 }9 e3 I$ z' ?+ y( Y2 U

* M6 Z" u; x$ k7 ]
5 Q* v1 G, R# j
; X$ K8 L) H: y

' B2 A5 U+ g) K4 u( C) k" `% U$ w. F% ~, m
* N  p0 M! U9 P

3 F7 A1 q7 Z4 I  ?  h
$ R, ]& K5 s, l; L' n; q4 n  I
! ^- s% e9 F. X8 j

; A6 n- k' j! w. ^' |* \' s: C0 @% E  t* q* @# f
. e! t; W( Y% i  x! g- ?0 j8 g

2 W  T# v+ l8 Y6 _4 g* r5 y. ?: L' R# j5 t

6 x3 [' g9 h# g8 u4 a; l) [, A, t& r# L: N; W
3 y7 b: w+ E! N0 w

" T  p: F' i8 w" H1 X/ t' n, C

8 ]$ t/ h( j6 u' b, K   5 O9 T- z1 }6 l6 I$ X7 E
收藏 1 评论2 发布时间:2019-2-21 10:47

举报

2个回答
仙景 回答时间:2019-2-21 13:39:51
这软件很方便啊
TLLED 回答时间:2019-2-21 13:44:54
liu553824989 发表于 2019-2-21 13:39# r. Y; a  B! j" f; ~9 P" N
这软件很方便啊
( n* `  H# e* i
STM8CubeMX不能生成代码      
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版