大家好,欢迎来到IT知识分享网。
在调试基于F103单片机的MCP2515时,怎么调试都不正常,用的还是以前调试过的代码,隔了一段时间后再重新运行就不行了;
于是单步运行调试,没想到,单步运行调试竟然成功了;于是想到是延时的问题,在初始化那里的reset函数里加了个延时,再下载进去板子里果然就正常了。
void mcp2515_reset(void)
{
static uint8_t status;
uint8_t cmd = MCP2515_CMD_RESET;
mcp2515_cs_enable();//置MCP2515的CS为低电平
status = HAL_SPI_Transmit(&hspi1,&cmd,1,100);//发送写命令//发送寄存器复位命令
delay_ms(100); //没有这个延时,下载到板子里就不能正行发送数据,单步调试过去这里后就能正常运行,所以断定是没有这个延时的原因。
mcp2515_cs_disable(); //置MCP2515的CS为高电平
}
看了MCP2515的datasheet后,SPI接口描述如下图,MCP2515第一次发送数据时,需要先拉高CS引脚,再拉低CS引脚进行写入数据;于是按照下面更改mcp2515_reset函数也是可以正常运行的:
void mcp2515_reset(void)
{
static uint8_t status;
uint8_t cmd = MCP2515_CMD_RESET;
mcp2515_cs_enable();//置MCP2515的CS为低电
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/14100.html