前面看了几本书看到两点通信以后,接下来的几个章节,是类似温度数据CAN传输一类,跟实际工作中,想要完成的目标不太一致,所以,回头再去看了经典的基础教材<<项目驱动CAN-bus现场总线基础教程>>。
前几年,第一次看的时候,一头雾水,似懂非懂,这次经过其他基础教材的打磨后再看,感觉对书里第三章的内容,更好理解了。
兴致匆匆的提鼠标CV下来,编译,嗯,嗯,不行。怀疑CV错了,仔细核对无误,发现拓印书上的程序就是不行。没办法,只能再次网络探索,发现网上也没有一模一样的源程序流传。(吐槽一下,现在常规的网络引擎搜索能力,真心是比二十年前倒退的。)
后来经过翻找网络后,发现有流传一个 SJA1000_PELI库文件,经过对SJA1000REG.H 文件的对比,发现就是书上的提到的配置文件。SJA1000_PELI.LIB 这是打不开的,对SJA1000_PELI.H这文件对比发现,于书中所列的函数名大差不差,大小写之分。
(PS: 很好奇,当初这些关于SJA1000的资料怎么在立功科技与致远电子都找不到了)
SO:最终根据如下提示,
按要求配置好验收和滤波寄存器
再初始化一下
这个是书本源程序,对比着看可能更好理解
主函数里面嘛,就是可以根据具体要求具体写了,基于下面两个大框架(未试)
我就单独发送,效果如图(时间没改成1S,加个延时就行)
至此,SJA1000差不多算了解一二了。
接下来有2个方向:
一个就是 STC89C52+SJA1000 与 其他单片机的CAN通信
一个就是 转向 stc32g12k128 与 其他单片机的CAN通信
前面去了解熟悉SJA1000 ,就是为了了解相关底层寄存器的配置过程,进儿了解CAN的相关内容。
上述两个方向嘛,打算都试试。
(有人会讲STM8 ,STM32 ,NXP, 萨瑞啥的, 这个就看初学者刚入门的时候是哪种了。由于我以前学校学的是51,工作也不是完全是嵌入式,目前只是习惯性的学习而已。反正单片机只是工具而已,看个人喜好)