| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> PIC16F18xx软/硬件SPI驱动磁性传感器AS5045B -> 正文阅读 |
|
[嵌入式]PIC16F18xx软/硬件SPI驱动磁性传感器AS5045B |
刚入职时做项目用到了PIC这款单片机,以前没有接触过,只能速成。国内资料比较少。说实话我最怕写硬件底层驱动,说起来惭愧学生时期只自己尝试对着手册写过iic的,spi还是头一次使用,调用方法从国外论坛查到的。 花了2天的时间才读出数据,然后使用485传输。 我直接使用了MCC对芯片引脚及外设进行了配置。 如果有什么不对的地方欢迎大家指出改正。? 开发帮助https://microchipdeveloper.com/projects:mcu1101-project-12 ?系统使用的内部振荡器 PIC的SPI四种模式,和标准有些区别 根据芯片手册中的时序图,选择SPI的模式一。MCU作为主机。 当时我debug观察变量,发现数据稳定是稳定了,但是会发生2倍跳变,然后再稳定,这样肯定不对。 于是我使用了模拟IO方法,读出了稳定的值,再慢慢更改模式,最终发现是在采样输入数据配置中出了问题,是选择“END”而不是中间。 ?配置完后给IO口重命名,查看输入输出的配置是否正确。 中断这里也要勾上。我没有注意到要打开中断外设使能,导致串口中断不能使用。 在刚创建好工程那会我翻开了下代码,唯独没有注意头文件藏着封装好的函数。?
在主函数中系统初始化后加入:
?我只需要读出高12位的值即可,后面的校验位等信息暂时不用关心。后面的OTP编程模式看起来很复杂,我也没有去了解。
?由于SPI是全双工通信,发的时候会接收到数据,所以接数据且不需要发送数据时候写个0就可以了?
? ? ? ?? CPHA=0要在第一个边沿进行数据采样,所以CLK由低到高,数据采样在上升沿,发送在下降沿(第2个边沿)
CPHA=0要在第二个边沿进行数据采样,所以CLK由高到低,数据采样在下降沿,发送在上升沿(第1个边沿)? 简要记录自己学习的过程。感觉Debug不能随时查看变量数值很麻烦,必须要单步执行暂停。 软件会时常出现莫名其妙的毛病,例如编译不了makefile文件出错,重启解决。下载调试过程也是,后来莫名其妙就好了,我以为下载器寄了。 ? ? ? ? 我还需继续努力,学习更多技术,提升自身能力。往后会陆续更新自己以前写过的部分东西。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 14:35:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |