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

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

[复制链接]
TLLED 发布时间:2019-2-21 10:47

) C+ L9 A/ Q9 k% h+ \. S5 y    测试STM8L050 SPI输出测试6 s# l: E/ J3 J" X
   
# c9 B- S9 w! w) R* K    一、端口配置:' s0 n* _: \% x9 S1 G
    # J7 ]8 c/ G) C, L/ J- P7 E
    使用STM8CubeMX来查看SPI需要的引脚3 |5 d0 V: @/ c& ~6 k
    1.png / p9 V/ D: R6 X# s3 |8 T
  
/ a$ j/ [' o! @    二、程序部分1 T& `) Y; i' r1 W
    6 C8 |4 u; r7 ~& C: |% Z
    2.1、SPI程序" k# K8 m$ ^& X: e8 }
  1. //spi.c# K9 `$ |7 ^# B2 h- m  }) J6 e2 R
  2. #include "stm8l15x.h"6 \- N) `. [" I1 x: D

  3. * T1 Q- M) f9 ]$ q% z7 v2 D
  4. void SPI_FLASH_Init(void)
    - T% G1 ]$ v  S3 I
  5. {
    # I6 R6 g$ k7 G1 h, l8 T/ Q! a
  6.   GPIO_Init(GPIOB, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast);   //SPI_MOSI- w+ M4 x6 l- O# [& R0 n" P. l
  7.   GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_In_PU_No_IT);        //SPI_MISO
    & T. [2 q7 u7 p5 l2 j7 g  E
  8.   GPIO_Init(GPIOB, GPIO_Pin_5, GPIO_Mode_Out_PP_High_Fast);   //SPI_SCK* _" n! J0 a9 D. O( o7 Y
  9.   
    & b: s3 S% Q  x3 I8 d
  10.   CLK_PeripheralClockConfig(CLK_Peripheral_SPI1, ENABLE);; R' |, R( J; U1 H9 [3 @. {
  11.   
    ( J! Q) L* i: n6 ~5 r
  12.   SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_4, SPI_Mode_Master,\
    % l+ @3 s( V% ^. x% h5 M
  13.                  SPI_CPOL_High, SPI_CPHA_2Edge, \
    ; c3 A! J. g" L, O) Q7 J
  14.                 SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);
    & }- Z4 @2 @# ~6 s! p! _" m
  15.        
    & U" D; m5 o) N- O3 j
  16.   SPI_Cmd(SPI1, ENABLE);        /* 使能SPI */
    2 p! w3 S& q- @% B- P
  17.        
    2 ]$ E, ~# \) q# I/ Z
  18.         /* 配置CS管脚 */
    3 L: k  E/ J0 O, n/ ^( S
  19. //        GPIO_Init(SPI_CS , SPI_Pin_CS, GPIO_Mode_Out_PP_High_Fast);" |6 p% A, W2 W
  20. //        GPIO_WriteBit(SPI_CS, SPI_Pin_CS, SET);                /* 拉高不使能外部SPI设备 */
    % a3 j$ n. K7 `& x
  21. 2 P2 G2 w0 k! G, w' r
  22. }
    : n( P7 o2 j4 G3 I$ k+ \& c
  23. 5 S  _3 Z2 y  p/ }. U+ s  a% b; j$ `9 X% D$ F

  24. $ r8 X* |, B! D& T8 e" C' ^, ^
  25. uint8_t SPI_FLASH_SendByte(u8 byte)
    0 h9 M" {  E7 z
  26. {0 Y% ^+ Z( O: R" f7 E# p6 \6 @
  27.   /* Loop while DR register in not emplty */) [6 f3 P8 {$ S
  28.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);
    ' f; x/ K; {6 u' E
  29.   /* Send byte through the SPI1 peripheral */  N$ M* w6 z0 \2 l5 i+ K
  30.   SPI_SendData(SPI1, byte);6 }5 a! O4 n- U, t3 O# l, g
  31.   /* Wait to receive a byte */9 H% Y% d* m# ?( G6 t( t. o" A
  32.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET);3 o" L2 X  \6 }% `( [1 H
  33.   /* Return the byte read from the SPI bus */; O* X2 n# _- P7 h! l6 h! g
  34.   return SPI_ReceiveData(SPI1);         
    . ]( @  m! D$ J6 ?
  35. }0 y2 C, N# W. T# V! h
  36. //spi.h; R8 X; M. T! k# a: B8 G  s3 w
  37. #ifndef __SPI_H
    9 p8 X  h7 D: Z. ~/ g
  38. #define __SPI_H
    * ?* i* Y& L) a9 P, l5 k
  39. 4 a2 b9 t1 v2 y  P5 w
  40. void SPI_FLASH_Init(void);
    " |: T9 S# I! R% ?4 y6 L
  41. uint8_t SPI_FLASH_SendByte(u8 byte);  O; p- c6 e9 F* v* i9 P+ X

  42. 4 u* m5 W" s) n5 o
  43. #endif
    % {# N& J& g9 t
复制代码
/ P9 i! Q, }6 v, S' M
    2.2、主程序, T+ U& ]( X- x1 z! O: h
  1. void main(void)
      o% v) C% k& l9 H5 `% F
  2. {# K' `( d/ |! E5 }3 J1 Y4 I
  3. 2 q! E2 K3 l& o0 O, `0 o9 |
  4.   CLK_Config();           //时钟初始化
    , Q. C3 z6 y( ~( I1 y
  5.   ' K; g1 N: K# Y# ~7 m
  6.   Delay(0x2fffff);        //延时5S             # D0 x$ }+ Q8 Q" K& R; G
  7.   
    6 m7 J( l7 R. q- `" t
  8.   //led_init();             //led初始化; A9 H8 W4 h5 |; D4 W5 D
  9.   //swim_init();
    - {' C: A2 a1 j
  10.   uart_init_halfduplex();
    9 @1 s$ ?+ K$ j( `5 p' A- v7 V4 j; J
  11.   
    6 v8 F$ Z1 d7 X# W/ X& D$ F
  12.   SPI_FLASH_Init();; C% B% i% y' @4 K; ^! e
  13.   ! L+ u7 p! ]% Z8 |& m$ B
  14.   while (1)/ O+ ^$ c! l9 y6 p2 S, t6 S
  15.   {
    2 P2 R, r* ~9 c- \  `- b
  16.     2 f5 ~" {9 F8 X6 W6 Z
  17.     SPI_FLASH_SendByte(0x55);
    , ]$ l2 A3 b3 y% D# T  N, G
  18.     Delay(0xffff);( U% h  F  q  Z  W) p
  19.   }3 E/ z0 h2 J& R% c9 Q8 @' _
  20. }
复制代码
$ E) q" ^' O0 l9 n  L, j9 ?
    三、执行结果2 ?% v. W- u0 }+ y

0 {% A3 p: X8 B% C
" y, z2 \" j% b( M$ t, D
    手头上没有SPI通信的器件,使用示波器测试下,SPI_SCK和SPI_MOSI波形:- L( D3 O4 V5 x# x6 x
    黄色:SPI_SCK
. q4 D- g- X9 H' @6 R- k: e    绿色:SPI_MOSI7 `) ^1 L! }% ?/ T! M2 P' J. `
    SPI发送的数据是0x553 o* ], x6 s8 w( K- ]- j7 |
    2.png
8 z! V7 N1 [0 N( Q. Z
8 D' W+ K3 N' X$ Y; r5 F) y) n  D3 ~
2 j. p4 U% M) z1 f  I

& Z3 J/ ?9 D7 r0 m: X, Q
* p; L- T, {7 A0 u$ J! ?
) O* ^  ]# O: v
) p: U" q# u& V9 G

& q/ d" @# q1 M3 B6 I
* g. K8 O% r8 k: }+ L: e
, a( I+ n6 L! n0 M
+ s! R0 h/ d" l* C8 B9 R! n  W

! g7 v1 u, l, |( X# C
# {$ {8 {( g! _# R, I; Z2 h0 }
* _* ]6 b3 e0 d9 u. N$ b8 L$ n$ Y
2 g  Q7 H5 Z; a8 p% h

- F9 _* `0 s5 @% C
3 e9 C* N. s2 x

4 b8 r/ f6 Q" v9 A; u0 l
9 U  i' r/ I* s  x. X- G4 n5 n+ H
   
# p$ s# }- T0 s4 J4 E' \0 v5 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  f' s( _9 Q- O/ w0 Z! s
这软件很方便啊

, X. E! _. E9 j# q. d. hSTM8CubeMX不能生成代码      

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版