首页 > 其他 > 详细

单片机驱动-软件模拟SPI

时间:2020-08-22 21:21:28      阅读:72      评论:0      收藏:0      [点我收藏+]

一、软件模拟SPI程序

#define GD25Q256DF_CS_DIR            MKL25Z4_GPIO_DDR_OUTPUT(MKL_PORTA, 19)
#define GD25Q256DF_CS_LOW            MKL25Z4_GPIO_CLR(MKL_PORTA, 19)
#define GD25Q256DF_CS_HIGH            MKL25Z4_GPIO_SET(MKL_PORTA, 19)

#define SPI_SCLK_DIR                MKL25Z4_GPIO_DDR_OUTPUT(MKL_PORTA, 18)
#define SPI_SCLK_CLR                MKL25Z4_GPIO_CLR(MKL_PORTA, 18)
#define SPI_SCLK_SET                MKL25Z4_GPIO_SET(MKL_PORTA, 18)


#define SPI_DOUT_DIR                MKL25Z4_GPIO_DDR_OUTPUT(MKL_PORTD, 7)
#define SPI_DOUT_CLR                MKL25Z4_GPIO_CLR(MKL_PORTD, 7)
#define SPI_DOUT_SET                MKL25Z4_GPIO_SET(MKL_PORTD, 7)


#define SPI_DIN_DIR                    MKL25Z4_GPIO_DDR_INPUT(MKL_PORTA, 4)
#define SPI_DIN_PIN                    MKL25Z4_GPIO_GET_VALUE(MKL_PORTA, 4)

 

 

/* 
 *@brief spi软件延时
 *@param 延时时长
 *@retval none
 *@author Mr.W
 *@date 2020-8-4
 */
static void spi_delay(volatile uint32_t us)
{
    volatile uint32_t i, j;
    
    for(i = 0; i < us; i++)
    {
        for(j = 0; j < 16; j++);
    }
}

/* 
 *@brief spi引脚初始化
 *@param 延时时长
 *@retval none
 *@author Mr.W
 *@date 2020-8-4
 */
static void spi_init()
{
    GD25Q256DF_CS_DIR;
    SPI_SCLK_DIR;
    SPI_DOUT_DIR;
    SPI_DIN_DIR;
}

/* 
 *@brief spi写一个字节
 *@param 要写的数据
 *@retval none
 *@author Mr.W
 *@date 2020-8-4
 */
static void spi_send_byte(uint8_t data)
{
    uint8_t i;
    
    for(i = 0; i < 8; i++)
    {
        SPI_SCLK_CLR;
        spi_delay(10);
        if(data & 0x80)
            SPI_DOUT_SET;
        else
            SPI_DOUT_CLR;
        SPI_SCLK_SET;
        spi_delay(10);
        data <<= 1;
    }
}

/* 
 *@brief spi读一个字节
 *@retval 读到的数据
 *@author Mr.W
 *@date 2020-8-4
 */
static uint8_t spi_receive_byte(void)
{
    uint8_t i;
    uint8_t data = 0;
    
    for(i = 0; i < 8; i++)
    {
        SPI_SCLK_CLR;
        spi_delay(10);
        data <<= 1;
        if(SPI_DIN_PIN)
        {
            data |= 0x01;
        }
        SPI_SCLK_SET;
        spi_delay(10);
    }
    return data;
}

 

#end

单片机驱动-软件模拟SPI

原文:https://www.cnblogs.com/wenhao-Web/p/13546951.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!