Files
QD4C-firmware/libraries/zf_driver/zf_driver_soft_spi.h

92 lines
5.5 KiB
C
Raw Normal View History

2023-12-11 21:45:06 +08:00
/*********************************************************************************************************************
* CH32V307VCT6 Opensourec Library CH32V307VCT6 SDK
* Copyright (c) 2022 SEEKFREE
*
* CH32V307VCT6
*
* CH32V307VCT6
* GPLGNU General Public License GNU通用公共许可证
* GPL 3 GPL3.0/
*
*
*
* GPL
*
* GPL
* <https://www.gnu.org/licenses/>
*
*
* 使 GPL3.0
* libraries/doc GPL3_permission_statement.txt
* libraries LICENSE
* 使
*
* zf_driver_soft_spi
*
* libraries/doc version
* MounRiver Studio V1.8.1
* CH32V307VCT6
* https://seekfree.taobao.com/
*
*
*
* 2022-09-15 W first version
********************************************************************************************************************/
#ifndef _zf_driver_soft_spi_h_
#define _zf_driver_soft_spi_h_
#include "zf_driver_gpio.h"
#define SOFT_SPI_PIN_NULL (0xFFFF) // 用于区分是否分配引脚
typedef struct
{
union
{
uint8 config_info; // 配置整体数据
struct
{
uint8 mode :6; // SPI 模式
uint8 use_miso :1; // 是否使用 MISO 引脚
uint8 use_cs :1; // 是否使用 CS 引脚
};
}config;
gpio_pin_enum sck_pin; // 用于记录对应的引脚编号
gpio_pin_enum mosi_pin; // 用于记录对应的引脚编号
gpio_pin_enum miso_pin; // 用于记录对应的引脚编号
gpio_pin_enum cs_pin; // 用于记录对应的引脚编号
uint32 delay; // 模拟 SPI 软延时时长
}soft_spi_info_struct;
void soft_spi_write_8bit (soft_spi_info_struct *soft_spi_obj, const uint8 data);
void soft_spi_write_8bit_array (soft_spi_info_struct *soft_spi_obj, const uint8 *data, uint32 len);
void soft_spi_write_16bit (soft_spi_info_struct *soft_spi_obj, const uint16 data);
void soft_spi_write_16bit_array (soft_spi_info_struct *soft_spi_obj, const uint16 *data, uint32 len);
void soft_spi_write_8bit_register (soft_spi_info_struct *soft_spi_obj, const uint8 register_name, const uint8 data);
void soft_spi_write_8bit_registers (soft_spi_info_struct *soft_spi_obj, const uint8 register_name, const uint8 *data, uint32 len);
void soft_spi_write_16bit_register (soft_spi_info_struct *soft_spi_obj, const uint16 register_name, const uint16 data);
void soft_spi_write_16bit_registers (soft_spi_info_struct *soft_spi_obj, const uint16 register_name, const uint16 *data, uint32 len);
uint8 soft_spi_read_8bit (soft_spi_info_struct *soft_spi_obj);
void soft_spi_read_8bit_array (soft_spi_info_struct *soft_spi_obj, uint8 *data, uint32 len);
uint16 soft_spi_read_16bit (soft_spi_info_struct *soft_spi_obj);
void soft_spi_read_16bit_array (soft_spi_info_struct *soft_spi_obj, uint16 *data, uint32 len);
uint8 soft_spi_read_8bit_register (soft_spi_info_struct *soft_spi_obj, const uint8 register_name);
void soft_spi_read_8bit_registers (soft_spi_info_struct *soft_spi_obj, const uint8 register_name, uint8 *data, uint32 len);
uint16 soft_spi_read_16bit_register (soft_spi_info_struct *soft_spi_obj, const uint16 register_name);
void soft_spi_read_16bit_registers (soft_spi_info_struct *soft_spi_obj, const uint16 register_name, uint16 *data, uint32 len);
void soft_spi_transfer_8bit (soft_spi_info_struct *soft_spi_obj, const uint8 *write_buffer, uint8 *read_buffer, uint32 len);
void soft_spi_transfer_16bit (soft_spi_info_struct *soft_spi_obj, const uint16 *write_buffer, uint16 *read_buffer, uint32 len);
void soft_spi_init (soft_spi_info_struct *soft_spi_obj, uint8 mode, uint32 delay, gpio_pin_enum sck_pin, gpio_pin_enum mosi_pin, uint32 miso_pin, uint32 cs_pin);
#endif