码迷,mamicode.com
首页 > 其他好文 > 详细

GPIO模拟SPI

时间:2014-05-25 07:07:17      阅读:158      评论:0      收藏:0      [点我收藏+]

标签: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;
}



GPIO模拟SPI,布布扣,bubuko.com

GPIO模拟SPI

标签:spi

原文地址:http://blog.csdn.net/njufeng/article/details/26814945

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!