MSP430硬件SPI的问题

MSP430硬件SPI的问题,第1张

这个问题,你要用示波器看下时序对不对。

另外,硬件SPI发送数据或者命令给SPi型FLASH的时候有个问题要特别注意,你得再总线空闲的时候再把CS拉高,不是说缓存发送完了就拉高CS。对于430而言,要 看BUSY位清0之后方可拉高CS引脚。

用变量存储SPI数据

unsigned char a

a = SPI_Trans(0x04)

eeprom_write_byte(address,a)

SPI主机机读数据需要发送数据置换即通讯程主机SPDR数据送机SPDR机SPDR数据送主机

面代码供参考:

初始化SPI主机使用断模式3速度于2MHzSCKMOSISS脚输

接低ss选器件

SPI_Trans(0x0a)//发送址高8位

SPI_Trans(0xff)//凑足16位意义

a = SPI_Trans(0xff)//读入数据高8位

eeprom_busy_wait()

eeprom_write_byte(address,a)//写入eeprom

a = SPI_Trans(0xff)//读入数据低8位

eeprom_busy_wait()

eeprom_write_byte(address,a)//写入eeprom

拉高SS释放器件

ADIS16364读命令址16位读数据内容发送完址接16位现:

另外ADIS16364款器件datasheet给图表显示支持SPI通信模式3(CPOL=1,CPHA=1)程序配置模型0

CE是控制收发状态的,MSP430上应该为输出方向

CSN是SPI总线使能,是MCU控制24L01的接口状态的,应该用输出,不过一般如果没有多片共用SPI总线的话,完全可以不用控制,直接把CSN接死,就是24L01的SPI总线始终是使能的,这样做并不会增加24L01上的功耗,因为后边是用软件控制休眠的,除非还有别的SPI设备或IO复用并联在这组SPI端口上。所以MSP430上也应该为输出方向。

SCK是串行时钟,MSP430作主机时要提供时钟给24L01,所以也是输出方向。

MISO是主入从出,MSP430是主,24L01是从,所以MSP430要接收,是输入方向

MOSI相反,是主出从入,因此MSP430是输出方向

IRQ是中断,24L01在有状态改变(需要软件设定什么状态引起中断)时主动叫MCU用的,MSP430要使用一个IO来接收这个中断状态,所以要把对应的IO设置为输入方向,并且如果使用的不是查询式,而是真正的中断式 *** 作时,应该把这个IO设置为中断使能,注意设置中断时应该先设置中断方向等参数,最后再开启,防止开启后的修改导致意外进入中断。

总结一下,除了MISO和IRQ以外,全部都是输出方向,其中IRQ除了设置为输入,可能还需要启用IO中断。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7851788.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存