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

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

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

    测试STM8L050 SPI输出测试
   
    一、端口配置:
   
    使用STM8CubeMX来查看SPI需要的引脚
    1.png
  
   二、程序部分
   
    2.1、SPI程序
  1. //spi.c
  2. #include "stm8l15x.h"

  3. void SPI_FLASH_Init(void)
  4. {
  5.   GPIO_Init(GPIOB, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast);   //SPI_MOSI
  6.   GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_In_PU_No_IT);        //SPI_MISO
  7.   GPIO_Init(GPIOB, GPIO_Pin_5, GPIO_Mode_Out_PP_High_Fast);   //SPI_SCK
  8.   
  9.   CLK_PeripheralClockConfig(CLK_Peripheral_SPI1, ENABLE);
  10.   
  11.   SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_4, SPI_Mode_Master,\
  12.                  SPI_CPOL_High, SPI_CPHA_2Edge, \
  13.                 SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);
  14.        
  15.   SPI_Cmd(SPI1, ENABLE);        /* 使能SPI */
  16.        
  17.         /* 配置CS管脚 */
  18. //        GPIO_Init(SPI_CS , SPI_Pin_CS, GPIO_Mode_Out_PP_High_Fast);
  19. //        GPIO_WriteBit(SPI_CS, SPI_Pin_CS, SET);                /* 拉高不使能外部SPI设备 */

  20. }


  21. uint8_t SPI_FLASH_SendByte(u8 byte)
  22. {
  23.   /* Loop while DR register in not emplty */
  24.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);
  25.   /* Send byte through the SPI1 peripheral */
  26.   SPI_SendData(SPI1, byte);
  27.   /* Wait to receive a byte */
  28.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET);
  29.   /* Return the byte read from the SPI bus */
  30.   return SPI_ReceiveData(SPI1);         
  31. }
  32. //spi.h
  33. #ifndef __SPI_H
  34. #define __SPI_H

  35. void SPI_FLASH_Init(void);
  36. uint8_t SPI_FLASH_SendByte(u8 byte);

  37. #endif
复制代码

    2.2、主程序
  1. void main(void)
  2. {

  3.   CLK_Config();           //时钟初始化
  4.   
  5.   Delay(0x2fffff);        //延时5S            
  6.   
  7.   //led_init();             //led初始化
  8.   //swim_init();
  9.   uart_init_halfduplex();
  10.   
  11.   SPI_FLASH_Init();
  12.   
  13.   while (1)
  14.   {
  15.    
  16.     SPI_FLASH_SendByte(0x55);
  17.     Delay(0xffff);
  18.   }
  19. }
复制代码

    三、执行结果


    手头上没有SPI通信的器件,使用示波器测试下,SPI_SCK和SPI_MOSI波形:
    黄色:SPI_SCK
    绿色:SPI_MOSI
    SPI发送的数据是0x55
    2.png


















   
收藏 1 评论2 发布时间:2019-2-21 10:47

举报

2个回答
仙景 回答时间:2019-2-21 13:39:51
这软件很方便啊
TLLED 回答时间:2019-2-21 13:44:54

STM8CubeMX不能生成代码      
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版