c语言 串口 封装,首颗超小封装的串口(UART)转PWM转换芯片ZWI10A
全球首顆超小封裝的串口(UART)轉PWM控制芯片SOC。
功能概述
● PWM輸出特性
- PWM輸出范圍150HZ-200KHZ。
- PWM頻率為16位精度。
-占空比調節方式(0-255)。
● 高精度內部振蕩器
-出廠時精度校準為 ±1%。
-內部帶晶振故障檢測電路。
● 超寬的工作電壓
-寬工作電壓范圍。(1.8V-5.5V)。
-工業級和擴展級溫度范圍。
-上電自復位無需外部電路。
-上電電壓檢測電路,低電壓自鎖電路。
● 超低的功耗
- 3V 25條件下的功耗
-工作模式2.2mA。
-空閑模式0.5mA。
-掉電模式<1 uA。
-當電壓為2.0V時,典型值為3 μA。
● I/O和封裝
-超小的封裝SOT23-6,8腳UDFN封裝。特別適合便攜式低功耗的應用。
● 電氣特性
-工作溫度-55°C到+125°C。
-存儲溫度-65°C到+150°C。
-各個引腳對地的電壓VCC+0.5V。
-最大工作電壓6.0V。
-每個I/O引腳的DC電流40.0 mA。
- VCC與GND引腳的DC電流200.0 mA。
引腳定義
腳位
標識
功能
1
RX
UART異步串行口RX接收腳。
2
GND
數字及模擬地
3
PWM
PWM輸出口
4
NC
保留其他功能
5
VCC
VCC(2.0-5.5V)
6
/EN
使能腳:
0:芯片正常工作。
1:芯片進入休眠。
UART接口協議
芯片內部集成了串口通信協議。符合通用的TTL電平(3.3V-5V),波特率固定為4800,
1位開始,數據位8位,1位停止,沒有校驗位。因為芯片引腳不多,芯片只有RX引腳作為接收指令。指令的格式如下:
幀頭+命令字+數據H+數據L+CRCH+CRCL
幀頭
命令
數據H
數據L
CRCH
CRCL
0xA5
0x01
0x1F
0x40
0XC2
0XEB
0xA5
0x02
0x00
0xFF
0X6F
0X72
幀頭:固定值為0xA5。
命令字:1:0x01更改輸出PWM頻率。2:0x02更改占空比。
數據:數據是一個int整形共16bit。分開兩個字節發送,前面一個字節為數據的高字節,后一個字節為數據的低字節。當命令字
為0x01時數據對應的為一個16位的PWM頻率的整數。頻率的計算公式為:freq=8000000/data。Data為需要傳輸的16位int。
需要拆分成2個字節發送。譬如想要輸出1kHZ的頻率。1000=8000000/data,Data=8000,轉成十六進制后為:0x1F40則
DataH=0x1F,DataL=0x40。如果命令字為0x02,數據對應的就是PWM的高電平的占空比,占空比目前只支持0-255可調。
0對應的就是全部為低電平。255表示全部為高電平。
CRC:為16位的CRC-16/CCITT ?多項式系數x16+x12+x5+1。多項式為0x1021。初始值為:0x0000;CRC也是分開2個字節傳輸。前
面為高字節。后面為低字節。CRC計算前面所有字節的一共4字節。
C語言實現代碼:
/******************************************************************************
* Name:
CRC-16/CCITT??????? x16+x12+x5+1
* Poly:
0x1021
* Init:
0x0000
* Refin:
True
* Refout:
True
* Xorout:
0x0000
* Alias:
CRC-CCITT,CRC-16/CCITT-TRUE,CRC-16/KERMIT
*****************************************************************************/
uint16_t crc16_ccitt(uint8_t
*data, uint8_t length)
{
uint8_t i;
uint16_t crc = 0;?? // Initial value
while(length--)
{
crc ^= *data++; // crc ^= *data;
data++;
for (i = 0; i < 8; ++i)
{
if (crc & 1)
crc = (crc >> 1) ^
0x8408;
else
crc = (crc >> 1);
}
}
return crc;
}
串口通信因為存在一定的波特率誤差,一旦CRC16校驗不通過,芯片會拋棄該指令。所以為了保證系統的能得到正確的控制指令MCU主控端需要考慮多發幾次指令,或者相隔一定的時間循環發送,每次指令和指令直接的延時不能少于20ms。推薦50ms一次。
串口的典型應用電路:
電腦通過USB控制LED的調光
▇
總結
以上是生活随笔為你收集整理的c语言 串口 封装,首颗超小封装的串口(UART)转PWM转换芯片ZWI10A的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 江苏工匠杯_easyphp_wp
- 下一篇: 组件导致背景图片断层