zoukankan      html  css  js  c++  java
  • GPIO模拟SPI

    上次用gpio模拟i2c理解i2c协议。相同的,我用gpio模拟spi来理解spi协议。

    我用的是4线spi,四线各自是片选、时钟、命令/数据、数据。

    数据在时钟上升沿传递,数据表示的是数据还是命令由命令/数据线决定。


    開始条件:

    void spi_start(void)
    {
    	gpio_config(GPIO_CS, GPIO_OUTPUT);
    	udelay(SPI_SPEED_DURATION);
    	gpio_set(GPIO_CS, 0);/* start condition */
    	udelay(SPI_SPEED_DURATION);
    }

    结束条件:


    void spi_stop(void)
    {
    	gpio_set(GPIO_CS, 1); /* stop condition */
    	udelay(SPI_SPEED_DURATION);
    }

    传输数据:


    void spi_txdata_byte(uint8_t data)
    {
    	int i = 0;
    
    	for(i = 7; (i >= 0)&&(i <= 7); i--) {
    		gpio_set(GPIO_CLK, 0);//时钟上升沿传递数据
    		udelay(SPI_SPEED_DURATION);
    		if(i == 7) {
    			gpio_config(GPIO_MOSI, GPIO_OUTPUT);
    			udelay(SPI_SPEED_DURATION);
    		}
    
    		gpio_set(GPIO_MOSI, (data >> i) & 0x01);
    		udelay(SPI_SPEED_DURATION);
    		gpio_set(GPIO_CLK, 1);
    		udelay(SPI_SPEED_DURATION * 2);
    	}
    	
    	return;
    }



查看全文
  • 相关阅读:
    c++控制台 设置字体颜色
    c 无回显读取字符/不按回车即获取字符
    C 汉字处理
    codeblocks 汉字乱码
    [转]C/C++获取当前系统时间
    锐捷认证的一些问题&解决方法
    JAVA之BigInteger(转)【转】【很好用啊】
    常用小函数——不要重复造轮子
    字符串的朴素模式和KMP模式匹配
    直接插入排序
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10726324.html
  • Copyright © 2011-2022 走看看