完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
SPI是一个全双工的同步串行数据总线接口
很多芯片与MCU的通信都用到了SPI接口,比如对某些芯片内的寄存器进行设置等。这时候MCU是作为主机(MASTER),而被写入或读取的芯片就作为从机(SLAVE)。 MCU作为主机进行SPI写的时候很简单: unsigned char spi_write(unsigned char data) { SPDR=data; while(!(SPSR&(1< return data; } SPI接口是这样规定的:对SPI数据寄存器写入数据即启动了SPI的时钟SCK。即SPI的通信是由主机对SPDR进行赋值才开始的。 SPI设备作为从机的时候的读取操作是这样的 unsigned char spi_read() { while(!(SPSR&(1< return SPDR; } 但是MCU一般是作为主机进行读操作的,比如读取芯片的状态寄存器,如果按上面那样写代码是不能进行读取的,因为未给SPDR赋值,也就无法启动SPI。所以进行读操作时需要先向SPDR写入一个数据。 下边的代码给SPDR写入了0,其实具体写入什么要参考芯片的手册,如果手册上没注明,那么可以写入0试试。 unsigned char spi_read() { SPDR=0; while(!(SPSR&(1< return SPDR; } |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1085浏览 2评论
700浏览 1评论
453浏览 0评论
194浏览 0评论
333浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 01:59 , Processed in 1.134779 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号