完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是STM32的新手。我正在将我的代码从 ATMega128 移植到 STM32 以加快速度。我必须将 W5500 连接到 SPI2 上的 STM32F103。
为了测试我编译后对STM32上SPI的理解,while循环中的一个小测试代码。 SPI_Write(S0_CR,CR_CLOSE); //#define S0_CR 0x0001, CR_CLOSE 0x10; data_read = SPI_Read(S0_CR); 使用了以下子功能 void SPI_Write(int addr,char data) { SPI_选择 HAL_SPI_Transmit(&hspi2, ((addr & 0xFF00) >> 8), 1, 100); HAL_SPI_Transmit(&hspi2, (addr & 0x00FF),1,100); HAL_SPI_Transmit(&hspi2, (WRITE_OPCODE_S0),1,100); HAL_SPI_Transmit(&hspi2, 数据, 1, 100); SPI_取消选择 } char SPI_Read(int 地址) { SPI_选择 HAL_SPI_Transmit(&hspi2,((地址 & 0xFF00) >> 8),1,100); HAL_SPI_Transmit(&hspi2,(地址 & 0x00FF),1,100); HAL_SPI_Transmit(&hspi2,(READ_OPCODE_S0),1,100); HAL_SPI_Receive(&hspi2,spi_rec,1,100); SPI_取消选择 返回 spi_rec; } data_read 中应为 0x10 (16),但结果为零。通过串口。尝试诊断 如果(错误!= HAL_OK) 当首行地址不为0x00时,SPI_Write作用于HAL_OK; DSO 为 0x00 时不显示 SCK 脉冲,尽管 CS 变低。 同样在 SPI_Read 中;行——HAL_SPI_Receive(&hspi2,spi_rec,1,100); 在 UART 上给出 !=HAL_OK 我的下一步行动取决于消除这些疑虑。请请求帮助。 |
|
相关推荐
1个回答
|
|
问题已经解决了。
错误是因为我没有在 HAL_SPI_Receive(&hspi2, & spi_rec,1,100)中为 uint8_t spi_rec 添加&前缀 现在 HAL_OK 通过 UART 成功到达最后阶段。 万分感谢 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2711 浏览 1 评论
3235 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1807 浏览 1 评论
3643 浏览 6 评论
6030 浏览 21 评论
1332浏览 4评论
206浏览 3评论
194浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
348浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
439浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 15:34 , Processed in 1.081402 second(s), Total 44, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号