鸿蒙OS Hi3861的芯片实际开发中遇到的问题
优点:
比较适合开发者快速开发,上面的硬件操作的函数封装很简单,非常适合初学者使用封装好的函数调用硬件管脚,比如I2c gpio spi sdio 都被封装了,特别简单,中文注释,而且还提供了无线wifi 的封装函数,当然也有http 解析啊什么的,可以使用在简单的物联网控制的简单设备上。
谈谈我遇到的问题:
使用PWM 时候,竟然I2C 不能使用,最后发现复用出了问题,很是不解。
附上代码可以观察下现象。
首先复用PWM3 ,管脚复用了PIN12
//COM3 PWM3
IoSetFunc(WIFI_IOT_IO_FUNC_GPIO_12_GPIO,WIFI_IOT_IO_FUNC_GPIO_6_PWM3_OUT;
GpioSetDir(WIFI_IOT_IO_FUNC_GPIO_12_GPIO, WIFI_IOT_GPIO_DIR_OUT);
PwmInit(WIFI_IOT_PWM_PORT_PWM3);
下面是I2C 管脚复用 PIN0和PIN1
//GPIO_0复用为I2C1_SDA
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_0, WIFI_IOT_IO_FUNC_GPIO_0_I2C1_SDA);
//GPIO_1复用为I2C1_SCL
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_1, WIFI_IOT_IO_FUNC_GPIO_1_I2C1_SCL);
再看看PWM3 上 I2C 正好在这里
typedef enum {
/** GPIO0 function */
WIFI_IOT_IO_FUNC_GPIO_0_GPIO,
/** Functions of UART1 TXD */
WIFI_IOT_IO_FUNC_GPIO_0_UART1_TXD = 2,
/** SPI1 CK function */
WIFI_IOT_IO_FUNC_GPIO_0_SPI1_CK,
/** Functions of JTAG TD0 */
WIFI_IOT_IO_FUNC_GPIO_0_JTAG_TDO,
/** PWM3 OUT function */
WIFI_IOT_IO_FUNC_GPIO_0_PWM3_OUT,
/** I2C1 SDA function */
WIFI_IOT_IO_FUNC_GPIO_0_I2C1_SDA,
} WifiIotIoFuncGpio0;
/**
我先初始化了PWM 后初始化了I2C ,现象是PWM不能用,
而先初始化I2C 在初始化 PWM ,I2C 能用了。
这种问题就尴尬了,本来打算用这上面的4路PWM 和i2c ,
但是PWM 和I2c 竟然冲突了,现在办法就是 gpio 去模拟pwm了。文章来源:https://www.toymoban.com/news/detail-490598.html
随后定时器去模拟,发现定时器只能使用ms 定时器,频率太低了跟不上。
也有微秒定时器,在定时器回调里设置gpio高低电平,最终现象是HM 系统卡死。文章来源地址https://www.toymoban.com/news/detail-490598.html
实在没办法了,只能放弃使用Hi3861 ,请各位网友谨慎踩坑HI3861
到了这里,关于鸿蒙OS Hi3861的芯片实际开发中遇到的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!