详述网站建设的过程简答题二次元网站开发的意义
news/
2025/10/1 12:24:33/
文章来源:
详述网站建设的过程简答题,二次元网站开发的意义,wordpress移动端顶部菜单,手机网站开发需要哪些人SPI相关基础知识
SPI基本概念请自行百度#xff0c;参考#xff1a;百度百科SPI简介.我们讲重点和要注意的地方。
master模式下要关注的地方
接线一一对应
也就是说主控的MISO,MOSI,SCLK,[CSn]分别和设备的MISO,MOSI,SCLK,[CSn]一一对应相连#xff0c;不交叉#xff0…SPI相关基础知识
SPI基本概念请自行百度参考百度百科SPI简介.我们讲重点和要注意的地方。
master模式下要关注的地方
接线一一对应
也就是说主控的MISO,MOSI,SCLK,[CSn]分别和设备的MISO,MOSI,SCLK,[CSn]一一对应相连不交叉不交叉不交叉…重要的事情说三遍。
从设备的时序图 这是无线模块CC2500的SPI接口时序这里可以看到从设备要求1、时钟空闲时为低电平2、数据在时钟下降沿跳变上升沿稳定第1个沿为数据采样点3、高位先发送4、数据长度8位
这是AD7192的SPI接口时序这里可以看到从设备要求1、时钟空闲时为高电平2、数据在时钟下降沿跳变上升沿稳定第2个沿为数据采样点3、高位先发送4、数据长度8位 我们的master模式要根据从设备的时序要求来设置参数才能正常访问设备。
初始化参数
STM32CubeMX是一个比较好用的可视化工具具体使用方法参考官方文档这里看重点
这是连接上面那个AD7192芯片的配置生成代码后我们看它的设置
/* SPI2 init function */
void MX_SPI2_Init(void)
{hspi2.Instance SPI2;hspi2.Init.Mode SPI_MODE_MASTER; //MASTER模式hspi2.Init.Direction SPI_DIRECTION_2LINES;hspi2.Init.DataSize SPI_DATASIZE_8BIT; //一个数据8位hspi2.Init.CLKPolarity SPI_POLARITY_HIGH; //时钟空闲为高电平hspi2.Init.CLKPhase SPI_PHASE_2EDGE; //第二个跳变采样数据hspi2.Init.NSS SPI_NSS_SOFT; //软件设置CShspi2.Init.BaudRatePrescaler SPI_BAUDRATEPRESCALER_256;hspi2.Init.FirstBit SPI_FIRSTBIT_MSB; //高位在前hspi2.Init.TIMode SPI_TIMODE_DISABLE; //禁用TI模式hspi2.Init.CRCCalculation SPI_CRCCALCULATION_DISABLE; //禁用CRC校验hspi2.Init.CRCPolynomial 10;if (HAL_SPI_Init(hspi2) ! HAL_OK){Error_Handler();}
}
//引脚配置自动生成一般不用修改
void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
{GPIO_InitTypeDef GPIO_InitStruct {0};if(spiHandle-InstanceSPI2){/* SPI2 clock enable */__HAL_RCC_SPI2_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();/**SPI2 GPIO Configuration PB13 ------ SPI2_SCKPB14 ------ SPI2_MISOPB15 ------ SPI2_MOSI */GPIO_InitStruct.Pin ADC_SCLK_Pin|ADC_MOSI_Pin;GPIO_InitStruct.Mode GPIO_MODE_AF_PP;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB, GPIO_InitStruct);GPIO_InitStruct.Pin ADC_MISO_Pin;GPIO_InitStruct.Mode GPIO_MODE_INPUT;GPIO_InitStruct.Pull GPIO_NOPULL;HAL_GPIO_Init(ADC_MISO_GPIO_Port, GPIO_InitStruct);}
}查询、中断还是DMA
总的来说一句话就是根据需要来决定因为我们是接的低速AD芯片所以直接用查询方式就够了函数定义
//SPI2,master模式读写一个字节操作
//TxData:要写入的字节
//返回值:读取到的字节
uint8_t SPI2_ReadWriteByte(uint8_t TxData)
{uint8_t Rxdata;HAL_SPI_TransmitReceive(hspi2,TxData,Rxdata,1, 1000); return Rxdata; //返回收到的数据
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923844.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!