
NUC970(ARM9)
cp1300
电子爱好者
展开
-
NUC970裸机IIC驱动
NUC970裸机IIC的驱动,使用很简单,没有DMA,效率不怎么样,跟软件IIC一样,因为需要阻塞延时等待,调试过程中遇到的问题就是一旦IIC出现异常,没有复位机制,可能会导致一次通讯异常,之后错误状态会自动清除。//IIC.c/************************************************************************************************************* * 文件名: IIC.c * 功能: N原创 2020-11-04 11:49:59 · 801 阅读 · 0 评论 -
QMC5883L磁场传感器驱动
Honeywell的HMC5883L三轴磁性传感器驱动,操作比较简单,就是要注意设置好模式寄存器后,还要将0x0B设置为1,否则测量的值不对,并且温度一直是0//QMC5883L.c/************************************************************************************************************* * 文件名: QMC5883L.c * 功能: QMC5883L驱动 * 作者: cp原创 2020-11-03 10:31:02 · 4972 阅读 · 2 评论 -
NUC970 通用GPIO输入问题
测试发现IO输出没问题,输入必须开启CMOS缓冲或者施密特触发,这个在手册上面么有提到,目前使用都是开启了CMOS缓冲区才能做为输入IO,否则输入读取的数据无法反应IO状态。************************************************************************************************************************** 函数 : void SYS_GPIOx_OneInit(GPIO_TypeDef原创 2020-10-28 13:22:48 · 997 阅读 · 0 评论 -
MPU6050驱动
使用的模拟IIC接口驱动的MPU6050,最后使用官方的mpu_dmp计算的最终数据存在偏移,估计是没有电子罗盘进行校准,时间长了方向偏移特别严重。//MPU6050/************************************************************************************************************* * 文件名: MPU6050.c * 功能: MPU6050驱动 * 作者: cp1300@139.c原创 2020-10-28 13:17:54 · 1281 阅读 · 0 评论 -
NUC970 裸机USBD驱动(第一章)
官方提供的USBD驱动太随意,根本没法直接使用,折腾好久原因是我的开发板上面使用了一个很老的HUB芯片,是USB1.1的,导致没法使用USB2.0,后续测试都是基于USB1.1的,实际上USB2.0会更简单,因为支持的bluk可以支持512字节,USB1.1只有64字节,但是实际使用中除了速度区别,别的区别不大,因为NUC970的USB接收缓冲区非常方便,比如实际上bluk只有64字节,但是设置缓冲区大小512字节,也可以非常容易的接收512字节及以上的数据包,只要主机OUT,设备会自动接收,但是也有个问题原创 2020-10-18 09:17:29 · 1507 阅读 · 2 评论 -
单片机裸机移植sqlite3
上一篇文章中提供了vfs支持,此处主要是sqlite3移植所需的线程,信号量支持,sqlite3源码在官方下载,需要很大的内存支持,移植基本原理就是实现sqlite3所需的linux api接口即可,可以通过宏定义去掉一些不用的功能,减少API依赖。ucos_iii_pthread.c/***********************************************************************************************************原创 2020-10-10 08:26:12 · 3375 阅读 · 5 评论 -
基于FATFS底层实现的虚拟文件系统VFS接口(用于裸机移植sqlite3)
sqlite3移植所需的文件系统支持,采用的VFS接口,只实现了一些基本接口,对于属性与权限接口则未实现具体功能,由于FATFS文件系统没有权限管理,VFS主要是linux上面使用的,这里还是有区别,而且裸机情况下也不需要什么权限管理。需要用户堆支持。ff_vfs.c/************************************************************************************************************* *.原创 2020-10-10 08:19:20 · 2076 阅读 · 0 评论 -
NUC970 SD卡驱动(SDIO)
在读取SD卡的R2长响应折腾了不少时间,原因是必须开启DMA,不开启DMA,R2响应将不会传输到SDIO的FIFO中,将SDIO接口与STM32保持一致,并兼容应用层SDIO_SDCARD驱动。寄存器地址//SDIO========================================================================================================#define SDIO_BUFF_BASE原创 2020-09-13 09:12:50 · 1581 阅读 · 0 评论 -
NUC970(ARM9) UCOSIII移植
ARM9与 A7移植差不多,都比STM32简单,区别在于ARM9开关中断不一样,一些新指令不支持,并且NUC970没有VFP,无法使用硬件浮点运算,因此无需保存S0-S31这些寄存器,堆栈消耗也会少一些。//在.S文件中使用UCOS提供的中断管理startus.s ;/*************************************************************************** ; * .原创 2020-09-02 08:48:28 · 1382 阅读 · 6 评论 -
NUC970(ARM9)裸机SPI驱动
NUC970的SPI寄存器足够简单,但是没有DMA支持有点遗憾,现在SPI也算高速设备了,一个4线的SPI FLASH都支持100MHz时钟,400Mbit的速度了,靠中断肯定是不行的,目前NUC970所支持的几种存储器里面,估计只能靠TF或者eMMC了,毕竟有DAM支持,nand flash现在用的少,占用IO也多,速度也就那样,块还出奇的大,还要自己做写均衡,坏块管理,eMMC都是BGA封装,目前有个这种的SD NAND使用的SDIO接口的大容量flash,兼容SD卡驱动,可以实现QFN-8封装的1-.原创 2020-09-02 08:29:33 · 1143 阅读 · 0 评论 -
NUC970(ARM9)裸机定时器驱动
定时器结构比较简单,只需要初始化3个寄存器即可,但是需要使用AIC中断控制器//定时器基址//TIM========================================================================================================#define TIMER0_BASE (0xB8001000) //寄存器基址#define TIMER1_BASE (原创 2020-08-31 11:13:07 · 655 阅读 · 2 评论 -
NUC970(ARM9)裸机串口驱动与中断控制器AIC
裸机调试时,需要使用到SDRAM,需要使用JTAG,首先将芯片启动方式设置为USB,然后安装USB驱动 “WinUSB4NuVCOM_NUC970”,最后运行软件 NuWriter选择芯片连接设备连接成功后串口会有提示还需要在MDK中添加DDR初始化脚本,我使用的是unlink2,不知道jlinkv9是否是一样的脚本直接选择仿真,不要点击下载串口测试将收到的数据原封不动发送回来,只测试过串口0,其余的串口理论上操作一样下面是代码uart.c/****原创 2020-08-31 08:47:10 · 1775 阅读 · 1 评论 -
NUC970(ARM9)裸机启动文件
裸机启动,初始化堆栈,用户堆,以及关闭中断等操作 ;/*************************************************************************** ; * * ; * Copyright (c) 2020 NUC970裸机启动文件. * ; *原创 2020-08-30 17:02:12 · 1144 阅读 · 0 评论