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



查看全文
  • 相关阅读:
    汉诺塔IX
    N!
    卡片游戏
    vuejs 2—bind
    vuejs 1—基础
    困难的串 Kryptn Factor Uva129
    JavaScript13—JSON
    JavaScript练习—二级菜单
    JavaScript12—tools.js
    JavaScript11—定时器
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10726324.html
  • Copyright © 2011-2022 走看看