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



查看全文
  • 相关阅读:
    编程之美 2.3寻找发帖‘水王’ 扩展问题
    编程之美:1.12 扩展问题 解答与思考
    编程之美:1.9高效率安排见面会 图的m着色问题 回溯法
    研究生毕业课题怎么确定(转)
    图模型的统计推断 inference in graphical models(马尔科夫链的推断)
    微信js-sdk注意事项
    bootstrap-material-design-个人总结
    前端页面优化
    Material Design
    马克飞象
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10726324.html
  • Copyright © 2011-2022 走看看