【短时天气预报系统】indoor装置基本外设使用
[复制链接]
周末撸一贴
打板等了差不多一周才到,xLC越来越慢了
上个板图
裸板正面
裸板背面
必要的logo得有
胡乱撸的一板,高手轻喷
垂直走线,感觉也挺好
最后的焊接图:
其实除了MCU、天线和一些接插件
都是在xLC做的SMT
看着质量还行吧
把eInk屏装配起来
顺道还手撸了一张图
基本上,indoor装置就长这么个熊样了
外壳啥的,就不想了
还是想想怎么去薅几片涨价十几倍的传感器吧
还好RSL10这块芯片没怎么涨价,目前看来比较良心
来看看基础外设的使用
1、GPIO
墨水屏使用到了DIO11-DIO15
刚开始的时候,怎么都撸不通
就连高低电平都出不来
纳闷了好久
又翻了翻硬件参考手册
发现RSL10默认是支持5线JTAG调试接口
DIO13、DIO14、DIO15正好是复用的JTAG端口
所以,想使用DIO13、DIO14、DIO15必须要提前有所动作
贴个配置
// This is for DIO14/DIO15
DIO_JTAG_SW_PAD_CFG->CM3_JTAG_DATA_EN_ALIAS = CM3_JTAG_DATA_DISABLED_BITBAND;
//This is for DIO13
DIO_JTAG_SW_PAD_CFG->CM3_JTAG_TRST_EN_ALIAS =
CM3_JTAG_TRST_DISABLED_BITBAND;
然后就可以愉快地使用DIO13、DIO14、DIO15为基础IO口了
2、SPI
常用接口,用于驱动eInk
/* Initialize spi0 driver structure */
spi0 = &Driver_SPI0;
/* Initialize spi0, register callback function */
spi0->Initialize(SPI0_Master_CallBack);
使用RTE配置
很方便,但是记得在头文件中配置相关的管脚
3、uart和printf
uart基操就不说了
GCC里面使用printf和MDK中不太一样
eclipse需要重定向_write
撸它
int _write(int fd, char *pBuffer, int size) {
uart->Send(pBuffer, strlen(pBuffer));
/* Wait for transfer to finish */
while(uart->GetStatus().tx_busy);
memset(pBuffer, '\0', size);
return size;
}
实际使用printf的时候,总是会连续打印上次残留的字符
每次发送完毕把pBuffer用空字符塞一下,解决
效率估计不高
但是还有个问题,这个printf不支持浮点数的打印
不知道咋回事,可能是编译优化造成的吧
真囧,先不管了
4、FLASH操作
计划中,需要保存一个outdoor设备的mac地址
所以需要进行片上flash的操作
直接贴代码
非序列写入
一个很奇怪的问题
红框中的寄存器操作代码需要执行2次
否则写入FLASH会失败
调试看了看,返回的code是FLASH操作FLASH_ERR_WRITE_NOT_ENABLED写入未使能
执行2次就没问题,真奇怪,苟着用吧
5、ADC
很奇怪,CMSISDriver中没有提供ADC的驱动
只好手撸一个
void ADCGo(void) {
ADCInit();
/* Enable interrupts */
NVIC_EnableIRQ(ADC_BATMON_IRQn);
}
void ADCStop(void) {
Sys_ADC_Set_Config(ADC_DISABLE);
NVIC_DisableIRQ(ADC_BATMON_IRQn);
}
void ADCInit(void) {
/* Set the ADC configuration */
Sys_ADC_Set_Config(ADC_VBAT_DIV2_NORMAL | ADC_NORMAL | ADC_PRESCALE_1280H);
/* Set the battery monitor interrupt configuration */
Sys_ADC_Set_BATMONIntConfig(INT_EBL_ADC | ADC_INT_CH0);
/* Configure ADC_CHANNEL input selection to ADC_NEG_INPUT_DIO0 */
Sys_ADC_InputSelectConfig(ADC_INT_CH0,
ADC_POS_INPUT_DIO0 | ADC_NEG_INPUT_GND);
}
参照例程撸过来的,通道0
能用
调试发现配置成15位的ADC,返回值0-16383
用的次数也不多,接着苟
其他GPIO输入检测之类懒得贴了
上个运行动次打次图
发帖的格式
觉得好凌乱
调不好,就这吧
以上
回见
|