FM33LG0XX-SPI使用说明

FM33LG0XX-SPI使⽤说明
FM33LG0xx 芯⽚提供了 3 个 SPI 接⼝模块,可配置为主设备或从设备,实现与外部的 SPI 通信。引脚定义如下。
SPI的初始化如下。
void SPIx_Init(void)
{
}
读写程序
uint32_t SPIx_WriteAndRead(SPI_Type *SPIx,uint32_t data)
电子脚铐
{
电暖手套
uint8_t retry = 0;
// FL_SPI_SetSSNPin(SPIx, FL_SPI_SSN_LOW);
// FL_SPI_SetSSNPin(SPIx, FL_SPI_SSN_HIGH);
return data;
}遮蔽肩垫
uint8_t SPIx_WriteData(SPI_Type *SPIx, uint8_t *data, uint32_t length)
{
uint8_t retry = 0;
// FL_SPI_SetSSNPin(SPIx, FL_SPI_SSN_LOW);
while(length–)
{
FL_SPI_WriteTXBuff(SPIx, *data);
data++;
while(!(FL_SPI_IsActiveFlag_RXBuffFull(SPIx)))
{
retry++;
if(retry > 200)return 0;
}
FL_SPI_ReadRXBuff(SPIx);
}
// FL_SPI_SetSSNPin(SPIx, FL_SPI_SSN_HIGH);
}
uint8_t SPIx_ReadData(SPI_Type *SPIx, uint8_t *data, uint32_t length)
{
uint8_t retry = 0;
// FL_SPI_SetSSNPin(SPIx, FL_SPI_SSN_LOW);sync pad
while(length–)
{
*data = SPIx_WriteAndRead(SPIx,0XFF);
data++;
}
// FL_SPI_SetSSNPin(SPIx, FL_SPI_SSN_HIGH);
}
需要注意的是
根据NSS信号由硬件(NSS)还是软件(SSI)管理配置CS的引脚控制⽅式。
SPI 判断发送完成, TXBUF 标志不等于移位寄存器发送完成, BUSY 标志置位有个同步过程,有从 0 到 1 的⼀个过程,写完TXBUFF, BUSY 没有⽴刻置 1 还是 0, 在 SPI的⼯作时钟和系统时钟相差特别⼤时,这个问题会特别明显。 因此建议在开发过程中采⽤以下⽅式:
智能药盒1) 全双⼯模式: SPI 原理是主从移位寄存器交换,可以判断 RXBUF 标志来判断接收完成。
2) 半双⼯模式:发送完成不能判断 RXBUF,使⽤ BUSY,先判断 BUSY 为 1,再判断 BUSY 为 0,发送完成。
消谐柜FL_WriteTXBuff(SPI1,data);//写 TXBUF
while(SPI1->ISR &(1U<<8)) ==(1U<<8));//等待 BUSY 置 1,使⽤寄存器操作可以确保主时钟在 64MHZ 也可以保证程序逻辑没有问题
while(FL_SPI_IsActiveFlag_Busy(SPI1));//BUSY 变 0,发送完成

本文发布于:2024-09-22 10:29:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/148992.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:完成   寄存器   配置   设备   时钟   发送
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议