【max32660】简单智能手表开发流程

MAX32660开发流程

程序的流程没有问题了,我已经在stm32上实现了基本的功能。问题就是,意法半导体已经有cube可以直接初始化资源,而美信半导体,目前我没有发现方便的cube,所以我需要扣例程。所以这次的项目相对比较简单:将美信半导体的资源开发出来就行了。

我需要一个硬件I2c、软件SPI、一个定时器。所以只需要,初始化相关的模块,并且成功使用。就能完成项目了。

首先更具推荐引脚把I2C踢出,之后就能自由分配需要的SPI引脚了。

image-20210223195204169

SPI引脚

spi引脚一共是5个引脚,用P0_0~P0_4,正好五个

第一次实验,发现引脚并没有出现电平的变化,应该市引脚的使用方式不对。后来验证的时候发现P0_0,P0_1,位串口脚,所以我只能避开这两个,向上平移了两个引脚。更换引脚之后成功点亮。

硬件I2C

因为要用到MPU6050,在开发引荐I2C的时候我发现函数输入的参数和我在stm32的函数输入参数不同,好像没有设备地址。是因为放在了别的函数里设置吗?原例程太过于复杂,以至于一时半会儿看不清楚。

在群友的点拨后,我明白了,直接将需要写的寄存器数组放在发送数据的第一个就行了。是我太死板没有想到这一点。

现在又遇到了一个新的问题:I2C时序,写操作都是正确的。唯独就是连续读写的地方有问题。问题是无法读出数据,数据为0.

用逻辑分析仪看了一下,发现是6050返回的数据全是0,这么看来应该是初始化没有成功。读取程序应该没什么问题。

image-20210225224811427

但是之前初始化是没问题的,这就相当矛盾了。通讯没有问题,程序也没有问题。那问题会出在哪?I2C的读取速度太快?今天就先睡觉了,说不定明天起来就好了。

第二天,我重新仔细地看了一下代码。没看出来有什么不对的地方,而且美信的硬件I2C在逻辑分析仪中波形也算正确。我把问题锁定在mpu6050,可能是初始化有问题,网上说有可能是接触不良。但是,我在实际的检测中,并没有发现什么接触不良的地方。

到最后,发现原来是复位的时候没有延迟。之前也试过了复位延迟,结果没成功,可能是复位延迟时间不合适把。

现在有了所有的外设,接下来就是将定时器初始完成,就结束准备任务了。

定时器

源码移植非常简单,我在宏定义中额外缩小了1000倍,所以现在是以毫秒为单位。

40ms进一次中断,并且额外加一个1s的定时器来解算时间。

代码移植

上层代码移植还是非常方便的,计步器不出半个小时就弄好了,现在加入时钟,我之前也写过一个类似的,在这里加进来。

感觉不能自主修改时间实在是太low了,想加个上位机。

由于是临时增加的,所以就不临时增加文件量了。直接就在main.c中添加。

小插曲

一步小心把调试口给定义了,导致无法下载程序。还好我的运气比较好,复位后,前面有外设初始化,如果没有初始化成功,那么就会卡死在那里。我也是乘着这个空挡把新的程序烧录进去。平时情况,像这种没有boot的,哪就只能用复位引脚碰运气了。

log 2.28 - 00:10

串口通讯似乎是能够收到信息的,但是好像需要收集满512条信息才会进读反馈函数,明天起来看一下有没有空闲中断什么的。

第二天,我又重新尝试了一下,发现这个函数需要接受满size的大小才会进接收中断,也是非常鸡肋。

经过半天的调试后,我发现,每次总线空闲,就会进入UART_Handler

void UART1_IRQHandler(void)
{
	printf("UART_Handler\n");
    UART_Handler(MXC_UART1);
}

感觉就像是只能接收9个字符,接下来的字符都会变成空,不明白为什么。介于莫名其妙的只能接受有限字符的这个bug,我直接将上位机做了一点修改,改成两次发送,问题解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值