完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近用上了F030,在使用SPI的时候出现了一个问题,主模式中断读SX1276,一字节读没问题。两字节以上就直接进hardfault:void Sx1276_ReadNbytes(uint8_t addr, uint8_t *buffer, uint8_t size)
{ uint8_t SendData=addr&0x7f; uint8_t i=0; RF_CS0; HAL_SPI_Transmit_IT(&hspi1,&SendData,1); while (HAL_SPI_GetState(&hspi1) != HAL_SPI_STATE_READY); // HAL_SPI_Receive_IT(&hspi1,buffer,size); // while (HAL_SPI_GetState(&hspi1) != HAL_SPI_STATE_READY); for(i=0;i HAL_SPI_Receive_IT(&hspi1,buffer++,1); while (HAL_SPI_GetState(&hspi1) != HAL_SPI_STATE_READY); } RF_CS1; } 上面程序注释部分是一次读多字节,这样会进hardfault,下面未注释的是一次读一字节,没有问题。 经过调试发现出问题在下面这个地方。 /* Check if packing mode is enabled and if there is more than 2 data to receive */ if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (hspi->RxXferCount >= 2U)) { /* Set fiforxthresold according the reception data length: 16 bit */ CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); //运行到此处,立马进hardfault。 } else { /* Set fiforxthresold according the reception data length: 8 bit */ SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); } 以前用L1都没有问题。有谁对F0比较熟的,能指点下是什么问题么,另外用了freeRTOS. |
|
相关推荐
8个回答
|
|
楼主Sx1276_ReadNbytes入口的指针数组大小是多少?是否读取个数超出了这个数组。
|
|
|
|
不会超,100多的buffer,我试过只读2字节都有问题。 uint8_t SX1276Regs[0x70]; Sx1276_ReadNbytes(REG_LR_OPMODE,&SX1276Regs[1],(0x70-1)); |
|
|
|
HAL_SPI_Receive_IT,是不是这里用错了。你应该用不带IT的?
|
|
|
|
没错啊,是这样用的,中断方式接收,接收1个字节都是可以的,大于等于2个字节的设置跟一个字节的设置的区别就在CR2寄存器的 FRXTH位清0或者置位,现在看来置位没问题,一清0就hardfault. |
|
|
|
|
|
|
|
CubeMX生成的代码,没有使用中断回调函数,能贴的已经完全贴出来了。 中断和初始化代码都是CubeMX自己生成的,没动过。 |
|
|
|
HAL_SPI_Receive_IT(&hspi1,buffer++,1);你的用法也是有问题的。这里可以直接写多个地址。
HAL_SPI_Receive_IT(&hspi1,buffer,20); |
|
|
|
谢谢分享
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2201 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2027 浏览 3 评论
4633 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2171 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2705 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 08:32 , Processed in 0.929347 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号