ST意法半导体
直播中

李颜

7年用户 1391经验值
私信 关注
[问答]

如何实现从ATMega128移植到STM32以加快速度?

我是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)

李晓婷

2022-12-26 11:12:04
问题已经解决了。
错误是因为我没有在 HAL_SPI_Receive(&hspi2, & spi_rec,1,100)中为 uint8_t spi_rec 添加&前缀
现在 HAL_OK 通过 UART 成功到达最后阶段。
万分感谢
举报

更多回帖

发帖
×
20
完善资料,
赚取积分