Airoha1601
luck_horse
这个作者很懒,什么都没留下…
展开
-
AB1601 PWM模块
配套测试代码:void DRV_TMR16_PWM_Enable( uint16_t unit ){ TMR16B0.PR.reg = unit; TMR16B0.TCR.field.CEN = 1;}void DRV_TMR16_PWM1 ( uint16_t mr0, uint16_t mr0_2 ){...原创 2017-07-18 11:07:21 · 313 阅读 · 0 评论 -
AB1601中volatile的使用
代码如下:static volatile U8 BluetoothInitedFlag = 0;void WaitForBtInited(void){while(1){if(BluetoothInitedFlag == 1){break;}}}void TRSPX_bt_evt_hdl(bt_evt_t *evt)原创 2017-12-07 17:47:13 · 297 阅读 · 0 评论 -
AB1601定时器1注意事项
由于定时器1比较特殊,内部库文件中的延时函数也用到了,所以,有的时候会被改变配置。常见有以下几种情况:1.蓝牙初始化。2.定时器0初始化。3.调用了库中的延时函数。遇到这种情况,需要把定时器1重新初始化操作即可恢复正常。原创 2017-11-24 21:00:52 · 404 阅读 · 0 评论 -
AB1601串口死机修改
static UART_INIT_PARAMS const gUartDefault ={ /* uart_baudrate */ 3000000L, /* uart_rx_trigger */ 0x00BE, /* uart_wr_lcr */ ( UART_LCR_WORD_LENGTH_SET_原创 2017-11-24 20:58:21 · 331 阅读 · 0 评论 -
AB1601之串口参数设置
#define UART_FORMAT_WORD_LENGTH_5_BIT 0x00 ///#define UART_FORMAT_WORD_LENGTH_6_BIT 0x01 ///#define UART_FORMAT_WORD_LENGTH_7_BIT 0x02 ///#define UART_FORMAT_WORD_LENGTH_8_BIT 0x03 ///#define原创 2017-10-17 14:49:11 · 519 阅读 · 0 评论 -
AB1601低功耗时烧写代码注意事项
进入低功耗后功耗比较低,有时候插上了调试串口,有小电流漏过来,所以,即使断掉电源,还是进不了烧写状态。要想以下办法:1.烧写前先唤醒。2.或者拔掉调试串口。两种方法都可以。原创 2017-10-25 18:11:16 · 248 阅读 · 0 评论 -
AB1601之125K ID卡读写代码
#include "DoorIdReader.h"/*#define ID_HALF_PERIOD_MAX 256//unit:us#define ID_ONE_PERIOD_MAX 512#define ID_WAIT_MAX 1000#define ID_CARD_TIME 1000*//*#defin原创 2017-10-25 09:19:31 · 2793 阅读 · 0 评论 -
gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
相关博客http://blog.chinaunix.net/uid-24954950-id-2956476.html相关博客http://blog.csdn.net/misiter/article/details/7514428相关博客http://blog.chinaunix.net/uid-23916171-id-2653114.htmlGcc 编译优化简介 gcc转载 2017-10-24 21:03:47 · 1938 阅读 · 0 评论 -
AB1601优化与生成代码大小
-Os时生成的代码量明显比-O3时小很多!原创 2017-10-24 21:02:26 · 294 阅读 · 0 评论 -
AB1601编译优化参数引发的问题
现象:优化级别为-Os时,lcd不显示,spi接口波形信号有偏差。为-O0时显示正常。相关代码:void DRV_SPI_No_Wait_WriteRead (uint8_t* txbuf, uint16_t txsize, uint8_t* rxbuf, uint16_t rxsize){SPI.TXSRCADDR.reg = (uint32_t)txbuf;SPI.RXDS原创 2017-10-24 20:41:27 · 490 阅读 · 0 评论 -
AB1601蓝牙初始化注意事项
在使用中碰到生成二维码时死机的现象,经发现是由于开机时,后台进行了蓝牙初始化操作,初始化操作的完成是异步事件通知的。在初始化完成之前,调用了二维码生成的代码,导致在二维码生成的过程中,又进行了蓝牙初始化的操作。初步估计这两部分操作比较耗资源,导致冲突出错。通过检查蓝牙初始化完成事件来错开这两部分同时操作,问题暂时解决。相关主要代码如下:static volatile U8 Bluetoot原创 2017-12-07 17:52:33 · 1036 阅读 · 0 评论 -
C语言中类型使用的问题
在C语言中,不同类型数据做比较时要特别注意,不同的环境处理方式可能不一样的,比如负数和正数做比较是非相等,则可能出问题。原创 2018-01-17 13:48:10 · 187 阅读 · 0 评论 -
疑难杂症之复位重启
代码如下://读addmax,delmax值和已读记录数static U8 CmdDealFaceAndFingerSubReadAddDel(U8 *appData){ U8 i; U8 txLen; U8 rxLen; U8 responseLen; U8 rxData[16]; U8 txData[16]; U8 responseData[32]; U8 dataLen; U8 offset...原创 2018-04-13 11:19:31 · 975 阅读 · 0 评论 -
AB1601运行后反复复位问题排查过程
开机后反复复位,经查是硬件布线时有地方没处理好,把sda口和其他的口线短接在一起了,所以导致2个io口都初始化后,IIC总线异常,通过iic总线操作RC522时导致死循环,引发看门狗复位。...原创 2018-06-21 10:01:02 · 286 阅读 · 2 评论 -
串口干扰引起的问题
在调试AB1601带指纹机的一块板子上,发现几种指纹机工作都不正常,而且故障现象还不一样,刚开始以为是指纹机的问题,但反复用厂家的测试软件直接通过usb接口测试或串口测试都没问题。经仔细检查和比较,发现AB1601上接了个用于查看打印消息的串口,而且在插拔指纹机的时候没有断开这个串口,试着把串口断开后再接上指纹机,通电后工作皆恢复正常。证明这个调试串口影响了指纹机的正常工作。避免的方法:1.不使用...原创 2018-06-04 19:09:00 · 8891 阅读 · 1 评论 -
ili9341屏幕在断电一段时间后首次上电白屏问题
现象:断开电源一段时间后,首次上电会白屏,然后反复断电上电都能正常显示。原因:背光灯的打开对lcd的干扰引起的。解决办法:在背光的开关驱动电路中加入一个小电容,控制mos管的导通摆率控制,故障排除。...原创 2018-05-21 15:05:02 · 3158 阅读 · 0 评论 -
隐藏的比较深的一个bug
static uint8_t LcdGetFontIndex(uint8_t font){ if(font == '-') { return 10; } else if(font == ':') { return 11; } else if(font == ' ') { return 12; } else { return font - 0x30; }}void LcdGetFontDot...原创 2018-05-21 14:56:41 · 839 阅读 · 0 评论 -
AB1601安装新版本IDE后工程编译可以通过单无法连接的问题排查解决过程
1.卸载了老版本ide软件。2.安装了新版本ide软件。3.工程编译可以通过。4.连接无法通过,报无法找到库文件:-lc。5.发现libc.a库文件时存在的。6.怀疑环境变量的问题。7.打开makefile文件,跟踪-L 后面的库文件目录。8.通过@echo打印出LDFLAG的内容。9.发现环境变量有问题,还是指向老版本ide相应的目录。10.通过我点电脑,高级里面的环境变量设置,把相应的环境变量...原创 2018-05-04 14:37:00 · 248 阅读 · 2 评论 -
1601 AD转换源代码
uint8_t sleep_vbat_batlv_convert(uint16_t v_in_10mV){ switch(v_in_10mV) { case 330 ... 65535: return 100; break; case 240 ... 329: return 40+((v_in_10...原创 2018-04-25 11:35:58 · 320 阅读 · 0 评论 -
AB1601的OTA区224K存储空间的使用注意事项
头部16K要预留出来,否则写数据后会出现程序无法启动的情况,原因不明。#define DOOR_FLASH_LOGIC_BEGIN_ADDR 0x00000#define DOOR_FLASH_LOGIC_END_ADDR (0x44000-0x4000)//48k+224k-16k#define DOOR_FLASH_USER_BEGIN_ADDR 0x84000#define DOOR_...原创 2018-04-25 11:33:50 · 271 阅读 · 0 评论 -
AB1601中使用定时器来进行延时的弊端
因为要用到低功耗模式,此时定时器要关闭,否则会频繁唤醒处理器。但唤醒后需要立刻写iic存储设备AT24C02,需要延时2ms,此时定时器还未启动,会导致死循环。所以,在这种场景下,一定要想办法避开使用定时器来延时。...原创 2018-04-25 11:31:01 · 266 阅读 · 0 评论 -
AB1601中如何实现比较精准NOP延时
之前由于对AB1601的编译器不熟悉,写出来的延时代码在每个工程中都可能不一样,因为被编译器优化得一塌糊涂了。后来发现通过volatile关键字来避免优化,结合逻辑分析仪或者示波器测量io口输出的波形来确定延时参数,实现了毫秒精度的延时。代码如下:volatile void NopDelayMs(volatile U16 msVar){ volatile U16 i; volatile U16 j...原创 2018-04-24 17:43:37 · 378 阅读 · 0 评论 -
AB1601 IO口反应延时的问题
AB1601 IO口在对RC522的复位脚进行控制时,发现执行命令后还要延时几个毫秒才能成功,分析认为1601的驱动能力有限,导致电平上升速度慢,于是加了一个10K的上拉电阻,问题解决。原创 2017-10-14 14:45:47 · 462 阅读 · 0 评论 -
AB1601烧程序时注意事项
在公司的pcb板上,首先要断电,然后再将SDA与GND短接,就可以进入正常烧写状态了。如果顺序不对,则无法进入烧写状态。但官方的demo板没这个问题。在烧写程序时,有60K的程序是可以选择保留的,如果要完全不留任何痕迹烧写程序,则要把这60K擦除掉。原创 2017-09-30 10:32:27 · 460 阅读 · 0 评论 -
AB1601移植二维码编码库注意事项
移植过程中出现编译成功,但连接报错,找不到相关的函数入口。推测是库方面的问题,在工程中把跟库相关的几个文件增加进来就可以了。具体配置情况如下:#----- SYSTEM -----#cSRC += cfg_sector.c#----- IOMUX -----#cSRC += drv_odpinmux.ccSRC += drv_pinmux.c原创 2017-09-21 08:46:06 · 360 阅读 · 0 评论 -
AB1601LED之pwm
直接上代码:void DRV_Led_Set(led_ins led_idx, drv_led_setting *setting){ uint8_t unit_ms, unit_xn; uint32_t unit_val; volatile LED_SETTING_t ledMiscSet;volatile LED_T0T1T2T3_t ledT原创 2017-08-01 09:11:36 · 311 阅读 · 0 评论 -
ASC0106硬件连接注意事项
SLSERT:不要动,工作在IIC方式。TP2(KYSEL):要通过高阻接地,否则工作在8键模式。原创 2017-07-29 17:33:11 · 406 阅读 · 0 评论 -
AB1601spi传输慢的问题
在使用spi传输数据时,如果使用终端方式,则很慢,主要是中断响应很慢,有100us多的延时,采用查询方式反而没这个问题。原创 2017-07-29 17:30:18 · 378 阅读 · 0 评论 -
AB1601串口之bugs
1.当对方使用错误的数据格式发送数据时,串口必死。2.上电时如果连接了对端的串口,串口1死,串口2导致复位重启。一般解决办法,串口延时打开,对端如果要关闭,则现将1601的串口关闭。在接指纹机的时候使用这种办法有点管用。原创 2017-07-29 17:27:29 · 290 阅读 · 0 评论 -
AB1601GPIO不支持较高频率的脉冲中断
当输入信号的周期比较小时,中断脚无法做出响应。测试代码如下:#include "ab1600.h"#include #include #include #include "ab_uart.h"#include "ab_clk.h"#include "Drv_gpio.h"#include "Drv_pinmux.h"//pio input/outpu原创 2017-07-29 17:22:25 · 462 阅读 · 0 评论 -
AB1601某些io口不支持较高频率信号的输入
实际项目中用到125K ID卡的数据采样,发现某些IO口不支持,实测结果如下://#define ID_RFIN_PIN PIO0//ok//#define ID_RFIN_PIN PIO1//ok//#define ID_RFIN_PIN PIO2//ok//#define ID_RFIN_PIN PIO3//error//#define ID_RFIN_PI原创 2017-07-29 17:19:07 · 375 阅读 · 0 评论 -
AB1601的波特率注意事项
要根据主机的工作频率进行选择,最高可以到3Mbps:原创 2017-07-29 17:15:30 · 669 阅读 · 0 评论 -
AB1601读触摸芯片ASC0106的IIC波形图
有点毛刺,但不影响逻辑。原创 2017-07-29 17:09:59 · 1037 阅读 · 3 评论 -
AB1601之iic驱动改造
由于项目中需要使用iic的当前位置读数据模式,但厂家sdk中并没有实现。那就只能自己动手了:I2C_STATUS_ENUM DRV_I2C_SetupForRead(I2C_BUS_CTRL_T * pI2cCtrl, void(*end_cb)(I2C_STATUS_ENUM)){while(DRV_I2C_IsBusy());DRV_I2C_Disable();DRV_I2原创 2017-07-29 17:00:49 · 517 阅读 · 0 评论 -
BLE蓝牙hid键盘表
实测可用。uint8_t RC_hids_map[] ={0x05, 0x01, // Usage Pg (Generic Desktop)0x09, 0x06, // Usage (Keyboard)0xA1, 0x01, // Collection: (Application)0x85, 0x01, // Report Id (1)/转载 2017-08-01 19:25:08 · 6148 阅读 · 0 评论 -
AB1601中断的问题
AB1601中断工作在边沿触发模式时,5毫秒宽度的脉冲都无法触发中断,并且debound功能是关闭的。换成新的sdk1.04版本才解决。原创 2017-08-22 09:22:20 · 322 阅读 · 0 评论 -
AB1601的AD转换注意事项
AB1601的AD转换输入电阻比较小,只有500K,所以在设计外部电压采样电路时要考虑电阻的阻值。原创 2017-08-22 09:30:37 · 430 阅读 · 0 评论 -
AB1601 PWM注意事项
AB1601 PWM调用接口函数启动后,并没有立即输出脉冲。所以基于pwm的脉冲检测的硬件电路的操作要进行延时,否则会有误判。原创 2017-09-28 17:18:43 · 375 阅读 · 0 评论 -
AB1601低功耗之IIC和PWM控制注意事项
DRV_Uart_Flush(uart1_ins);DoorIicDeInit();DRV_OdGpio_IeSet(1DRV_OdGpio_IeSet(1DoorRfPowDisable();//id card 电源关闭SleepDeal();DRV_OdGpio_IeSet(1DRV_OdGpio_IeSet(1DoorIicInit()原创 2017-09-28 17:16:26 · 1035 阅读 · 0 评论 -
AB1601低功耗注意事项
1.某些引脚(如pio3)输出低电平时会消耗8UA左右的电流。2.ODGPIO0-2要特殊对待,如果是默认工作状态,则要关闭输入功能。3.ODGPIO0-1如果设置成iic功能,则进入低功耗前要切换到其他模式,如默认模式或者led模式,在默认模式要做相应处理,led模式则确保led关闭。原创 2017-09-01 09:49:34 · 554 阅读 · 2 评论