主页
  • README
  • 主页
  • journal日记
    • rtthreadv5.1.0
  • embedded嵌入式开发
    • SSPI
    • fsm状态机
      • 事件驱动型状态机
    • mm_fifo环形队列
    • lvgl
      • font字体生成
    • 经验分享
      • Byte alignment and protocol parsing
  • rt-thread笔记
    • repo
    • 线程
    • 设备
      • 串口
  • openharmony笔记
  • scons笔记
  • 公共基础库
    • 嵌入式utils
    • 鸿蒙utils
  • 开发与部署
    • gitbook
    • gitea服务器
      • gitea官方指导部署
      • Bitnami部署
    • 让Linux磁盘空间的弹性管理
    • docker笔记
      • docker
      • container
      • docker-compose
      • docker-machine
      • Portainer可视化界面
    • 1Panel运维管理面板
      • 家庭云的公网访问
      • 1Panel快速配置TCP代理
      • 端口转发访问内网
    • 服务器推荐
    • 极路由3刷机
    • ipv6公网
    • ddns动态域名
    • nginx反向代理
    • jumpserver堡垒机
    • bt宝塔
    • service自启服务
    • cloudreve部署
    • proxy代理
  • 工具收集
    • git笔记
      • git-push
      • git-flow
      • git-svn
      • EWARM
      • 常见需求
    • UsbEAm Hosts Editor
    • keil_下载地址
    • iar_下载地址
  • 相关链接
    • gitee首页
    • github首页
    • B站首页
    • gitea仓库备份
    • blog地址
Powered by GitBook
On this page
  • 简介
  • 项目地址
  • 名词介绍
  • 目录介绍
  • 快速开始
  • 示例
  • 贡献
  • 联系我
  • 许可证
  • 鸣谢
  1. embedded嵌入式开发

SSPI

软件SPI(Serial Peripheral Interface)在单片机开发中经常被使用,通过模块化的设计简化设计避免重复的工作量。

Previousembedded嵌入式开发Nextfsm状态机

Last updated 1 year ago

简介

软件SPI(Serial Peripheral Interface)在单片机开发中经常被使用,通过模块化的设计简化设计避免重复的工作量,

项目地址

名词介绍

简称
全称
中文描述

SSPI

soft Serial Peripheral Interface

软串行外围接口

目录介绍

.
├── inc
│   ├── mm_pin.h                #引脚操作头文件
│   ├── mm_sspi_def.h
│   ├── mm_sspi.h
│   └── spi-bit-ops.h
├── port                        #接口移植文件
│   ├── lpc_bare_sspi_port.c
│   ├── lpc_bare_sspi_port.h
│   └── mm_pin_port.c           #引脚操作实现文件
├── readme.md                   #文档
└── src
    ├── mm_sspi.c
    └── spi-bit-ops.c

快速开始

1. 添加sspi源码到工程中

2. 添加sspi头文件路径到工程中

3. 添加引脚操作实现文件到工程中

4. 添加引脚操作头文件到工程中

示例

#define LD_BLU1 PIN_NUM(2, 13)
#define LD_BLU3 PIN_NUM(1, 27)
#define LD_BLU5 PIN_NUM(1, 29)
#define LD_DEN PIN_NUM(2, 4)
#define LD_GRN5 PIN_NUM(1, 25)
void lpc_bare_sspi_init()
{
    static const struct lpc_soft_spi_config soft_spi_config[] = {
        {.sck = PIN_NUM(2, 4),   // LD_DEN
         .mosi = PIN_NUM(1, 25), // LD_GRN5
         .miso = PIN_NUM(1, 27), // LD_BLU3
         .bus_name = "sspi1"}};
    static struct lpc_soft_spi mm_sspi_bus[ITEM_NUM(soft_spi_config)];
    static uint8_t init_ok = 0;
    if (init_ok)
    {
        return;
    }
    for (int i = 0; i < ITEM_NUM(soft_spi_config); i++)
    {
        mm_sspi_bus[i].spi.data = (void *)&soft_spi_config[i];
        lpc_sspi_gpio_init(&mm_sspi_bus[i]);
        mm_sspi_bit_add_bus(&mm_sspi_bus[i].spi, soft_spi_config[i].bus_name, &sspi_bit_ops);
    }
    static struct mm_sspi_device sspi10 = {
        .config = {
            .mode = MM_SPI_MODE_3 | MM_SPI_MSB,
            .data_width = 8,
            .max_hz = 100000,
        },
    };
    mm_sspi_bus_attach_device_cspin(&sspi10,
                                    "sspi10",
                                    "sspi1",
                                    PIN_NUM(1, 29)); // LD_BLU5
}

贡献

欢迎提交issue和pr.

联系我

您可以通过qq群(790012859)联系到作者

许可证

鸣谢

[1]

github仓库
Apache License 2.0
https://github.com/rt-thread/rt-thread