第一步:stm8 SPI简介

在配置SPI相关寄存器时要注意时钟信号的相位和极性。

这次我们使用的是stm8驱动SO-8封装的DAC8830,使其输出一个方波。

DAC8830引脚说明和时序:

CS是片选信号,低电平有效。

SCLK在下降沿的时候启动传输,上升沿的时候传输完成。MSB在前,就是高位在前。

实际电路是按照DAC8830数据手册的典型应用电路做的。

只是输出部分没有加运放,VREF引脚没有连接。

再看stm8的SPI主模式:

第二步:SPI相关寄存器

设置时钟极性CPOL和相位CPHA仅需设置SPI_CR1的第0位和第1位。

第三步:具体实现

void Spi_Init(void)
{CLK_PCKENR1 |= 0x02;  //打开SPI时钟/*PC6、PC5设置为输出,最大10MHz*/PC_DDR = 0x70;PC_CR1 = 0x70;PC_CR2 = 0x70;
/*MSB、1MHz、主设备、CPOL空闲为低、CPHA第一个时钟开始*/SPI_CR1 = 0x04;
/*双线单向视距传输、CRC计算禁止、软件NSS、主模式*/SPI_CR2 = 0x03;
/*开启SPI*/SPI_CR1|= 0x40;
}
/*DAC8830是TI的16位DA*/
void Spi_Send(u16 data)
{PC_ODR_ODR4 = 0;          //拉低片选SPI_DR = (u8)(data>>8);  //先发高八位SPI_DR = (u8)data;       //再发低八位while(!(SPI_SR&0x02));   //等待发送区为空PC_ODR_ODR4 = 1;         //拉高片选
}
int main( void )
{u16 i;System_Init();  //系统时钟初始化Gpio_Init();    //PE5初始化Spi_Init();     //Spi初始化while (1){Spi_Send(i);  //输出阶梯波delay_ms(50);i++;if(i==65535)i = 0;PE_ODR ^= 0x20;  //PE5取反}
}

关于时钟和GPIO端口的配置请看 《stm8 点亮第一个LED》

通过示波器测试出DAC8830的输出脚,波形如图:

至此stm8的硬件SPI介绍完毕,其他高级功能请查阅数据手册。

stm8 硬件SPI相关推荐

  1. 【0.96寸 OLED屏实现1500Fps的帧率】STM32 软件、硬件SPI、I2C驱动总结

    目录 SPI版 OLED SPI 端口定义 七针OLED引脚定义 六针OLED引脚定义 软件SPI 硬件SPI 启用DMA 帧率测试 I2C 版 软件I2C 硬件I2C DMA STM32F103VE ...

  2. MSP430杂谈--AD7793硬件SPI驱动与模拟SPI驱动

    最近项目中用到了AD7793读取铂电阻值来得到相应的温度,编写了基于MSP430的硬件驱动程序和模拟驱动程序,并且能成功运行,现在记录一下分享给大家. AD7793硬件IIC驱动完整版下载链接:htt ...

  3. STM32G0 硬件SPI+DMA+LL库,最高通讯速率32MBit/s

    硬件SPI+DMA+LL库代码连接STM32G0硬件SPI+DMA+LL库,最高通讯速率32MBit/s-嵌入式文档类资源-CSDN下载 近期在写0.96寸OLED显示屏驱动的程序,之前试过用软件模拟 ...

  4. 梳理STM32F429之通信传输部分---NO.8 硬件SPI

    目录 一.STM32 的 SPI 特性及架构: 二.SPI 初始化结构体详解: 三.硬件SPI-读写串行 FLASH 实验 一.STM32 的 SPI 特性及架构: 1.引脚简介: (1)   (Sl ...

  5. 【STM32】HAL库在7针脚0.96寸OLED屏上的移植---硬件SPI(一)

    目录 SPI背景和接线 1.什么是SPI 2.如何接线 STM32CubeMX部分 1.配置时钟 2.配置SPI 3.工程生成 MDK 5 部分 1.移植OLED文件 2.修改引脚 3.修改main函 ...

  6. STM32硬件SPI通过fm17550读取身份证UID,识别银行卡,识别TYPEA与TYPEB

    上面是我的微信和QQ群,欢迎新朋友的加入. 目录 1.硬件平台 2.驱动实现 3.循环扫卡测试程序 4.TYPEB射频卡扫描 5.TYPEA射频卡扫描 6.身份证UID读取 1.硬件平台 1.STM3 ...

  7. TM4C123G 硬件spi

    TM4C123G 硬件spi 前言 这里用的是TM4C123FH6PM 微控制器的同步串行接口 (SSI) 模块 这是是的管脚说明 根据所设置的数据大小,每个数据帧的长度均在 4-16 位之间,并且从 ...

  8. enc28j60 linux 驱动_linux enc28j60网卡驱动移植(硬件spi和模拟spi)

    本来想移植DM9000网卡的驱动,无奈硬件出了点问题,通过杜邦线链接开发板和DM9000网卡模块,系统上电,还没加载网卡驱动就直接崩溃了,找不到原因...刚好手上有一个enc28j60的网卡模块,于是 ...

  9. DSP28335的硬件SPI使用(无FIFO)总结

    目录 前言 问题的提出 问题的解决 说在最后 前言 这两天折腾了一个旋变器解算模块的使用,类似于这种器件一般都是使用通信的方式写入芯片对应的寄存器的数据从而初始化芯片或得到可编程的结果:反之,我们也需 ...

最新文章

  1. pytorch旧版安装
  2. 同盾科技完成 7280 万美元 C 轮融资
  3. 新Rider预览版发布,对F#的支持是亮点
  4. 【NOIP模拟】健美猫
  5. 23种设计模式之迭代器模式
  6. JavaScript-操作DOM对象-删除dom节点
  7. 解决QML Window 增加radius效果
  8. CString的基本用法
  9. Session一次错误记录
  10. 补卡的糟糕经历引发的思考:一点黑客技术让我们不再泄露那么多数据
  11. 2021年高压电工考试及高压电工模拟试题
  12. 如何在html中添加视频链接,在ppt中加入视频超链接的方法步骤
  13. IDEA安装插件(在线/离线)
  14. 数据分析报表使用指南
  15. 加速区块链改革促进区域经济转型升级 ——中国·平泉负氧离子产业园正式落成
  16. ansible进阶(五)-handlers-任务发生更改时触发操作
  17. php hapijs,hapi 起步
  18. 计算机毕业设计(75)php小程序毕设作品之网上销售小程序商城系统
  19. Linux常用命令——sysctl命令
  20. TR069协议向导——一个帮助你了解TR069协议的简明教程(一)

热门文章

  1. vue——echarts更换主题
  2. [转载]【职场新人必看】领导谆谆寄语
  3. IIS服务器开启https
  4. 我开始搞研发管理和项目管理了,发现最难管理的还是人
  5. DVB-S2 DVB-S2X DVB-DSNG 发射机 接收机FPGA IP
  6. 华硕ASUS Prime Z370M-PLUS II黑苹果OpenCore EFI
  7. 比比网开源的一款头像制作小程序
  8. JavaScript如何判定一个给定的时间区间在哪些时间段范围内?
  9. 【安卓】——Autofill Framework(自动填写)用法详解
  10. 2021-01-12 DataGrip2020.3 离线安装驱动