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;
    }



查看全文
  • 相关阅读:
    有点忙啊
    什么是协程
    HDU 1110 Equipment Box (判断一个大矩形里面能不能放小矩形)
    HDU 1155 Bungee Jumping(物理题,动能公式,弹性势能公式,重力势能公式)
    HDU 1210 Eddy's 洗牌问题(找规律,数学)
    HDU1214 圆桌会议(找规律,数学)
    HDU1215 七夕节(模拟 数学)
    HDU 1216 Assistance Required(暴力打表)
    HDU 1220 Cube(数学,找规律)
    HDU 1221 Rectangle and Circle(判断圆和矩形是不是相交)
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10726324.html
  • Copyright © 2011-2022 走看看