[技术问答]

HC32L13x官方提供的demo中SPI例程的时钟问题

[复制链接]
5614|11
手机看帖
扫描二维码
随时随地手机跟帖
indeed嘻嘻哈哈|  楼主 | 2021-6-11 08:45 | 显示全部楼层 |阅读模式
hc32l13x_ddl_Rev1.9.2 Lite\example\spi该历程中的程序有几个疑问:1)、例程初始化未选择和设置系统时钟频率,没有初始化默认是多少呢?选择的是什么时钟源呢?   2)、修改此demo驱动SX1278芯片时出现“while(Spi_GetStatus(M0P_SPI0, SpiTxe) == FALSE);    //等待发送缓冲器空”和“while(Spi_GetStatus(M0P_SPI0, SpiTxe) == FALSE);    //等待发送缓冲器空”死循环问题,将判断状态由“SpiTxe,SpiRxne”改为“SpiBusy”规避了死循环,但是读出的数据全都是0,怀疑问题问题出在时钟上,还请各路大神指点一二

使用特权

评论回复
indeed嘻嘻哈哈|  楼主 | 2021-6-17 10:02 | 显示全部楼层
我来结贴了!针对我的问题,查阅资料,手册最终调试成功,出现问题的原因应该是片选引脚,也重新配置了时钟之前使用的是默认的4M时钟,将时钟修改为48M设置好对应的分频系数。关于片选->手册中有这样一句话(– 在传输过程必需设置 SPIx_SSN.ssn 为 0,传输完成后必需设置 SPIx_SSN.ssn 为 1。)受此启发对片选重新设置后能实现通信,最后由于我移植的是stm32f103系列单片机的程序,时钟是72M的,HC32我配置为48M,定时器又重新修改了一下。最终实现了移植前平台的效果。

使用特权

评论回复
这个是咋回事呢?持续关注这个帖子。

使用特权

评论回复
martinhu| | 2021-6-11 11:21 | 显示全部楼层
第一,关于时钟,用户手册的系统控制章节写明了,默认是RCH,如果什么都没配置,那么在进入main之前的systeminit.c里面有加载RCH 4MHz的语句。
第二,楼主改逻辑之前,建议多看看SPI协议和寄存器标志的意义

使用特权

评论回复
评论
indeed嘻嘻哈哈 2021-6-11 13:48 回复TA
感谢!我回去配置 一下时钟吧! 
两只袜子| | 2021-6-17 10:56 | 显示全部楼层
哈哈,开悟就在一瞬间

使用特权

评论回复
NUANXIXIA| | 2021-9-10 11:33 | 显示全部楼层
大佬,我也是,卡在这里了,可否分享一下代码

使用特权

评论回复
评论
martinhu 2021-9-14 14:03 回复TA
@NUANXIXIA :你不会没有使能SPI的外设时钟吧??? 
NUANXIXIA 2021-9-10 14:51 回复TA
@NUANXIXIA :读出来的数据全部为0x0E 
NUANXIXIA 2021-9-10 14:32 回复TA
@martinhu :发送之前是拉低,发送之后拉高,可以通过while(FALSE == M0P_SPI1->STAT_f.TXE){;} while(FALSE == M0P_SPI1->STAT_f.RXNE){;} 但是数据没写进去 
martinhu 2021-9-10 13:58 回复TA
发送之前片选要拉低,即使没有片选脚,寄存器也要设置。发送完再拉高。 
Alohaq| | 2023-10-27 08:26 | 显示全部楼层
martinhu 发表于 2021-6-11 11:21
第一,关于时钟,用户手册的系统控制章节写明了,默认是RCH,如果什么都没配置,那么在进入main之前的syste ...

如果一直寄存器nss一直拉低会怎样?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝