|

楼主 |
发表于 2024-4-19 15:04:23
|
显示全部楼层
- #include "bk4802.h"
- const u_int8_t BK4802_ADDRESS = 0x48;
- uint16_t myrxfreq[] = {0x4B8A, 0x8113, 0x0000}; // 409.950 21.7
- uint16_t mytxfreq[] = {0x4B91, 0x1B22, 0x0000}; // 409.950 21.7
- uint16_t myrxreg[] = {
- 0xffff, // reg0---Frac-N高16bit
- 0xffff, // reg1---Frac-N低16bit
- 0xffff, // reg2
- 0xffff, // reg3--------------保留位
- 0x0300, // 0x0300___reg04_ w-------------收发不同1
- 0xb525, // 0x8e04___reg05_ w
- 0x08cc, // 0xF140___reg06_ w
- 0x021d, // 0xED00___reg07_ w
- 0xb888, // 0x17E0___reg08_ w
- 0x0000, // 0xe0e0___reg09_ w 保留位
- 0x00fc, // 0x8543___reg10_ w-------------收发不同2
- 0x8c5a, // 0x0700___reg11_ w
- 0x00e7, // 0xA066___reg12_ w
- 0x369f, // 0xFFFF___reg13_ w-------------收发不同3
- 0x6740, // 0xFFE0___reg14_
- 0x07a0, // 0x07a0___reg15_
- 0x9e24, // 0x9E3C___reg16_
- 0x1F00, // 0x1F00___reg17_
- 0xD1D1, // 0xD1c1___reg18_
- 0x300F, // 0x200F___reg19_
- 0x01FF, // 0x01FF___reg20_
- 0xE000, // 0xE000___reg21_
- 0x00ff, // 0x0339___reg22_
- };
- uint16_t mytxreg[] = {
- 0xffff, // reg0---Frac-N高16bit
- 0xffff, // reg1---Frac-N低16bit
- 0xffff, // reg2
- 0xffff, // reg3--------------保留位
- 0x7200, // 0x0300___reg04_ w
- 0xb525, // 0x8e04___reg05_ w
- 0x08cc, // 0xF140___reg06_ w
- 0x021d, // 0xED00___reg07_ w
- 0xb888, // 0x17E0___reg08_ w
- 0x0000, // 0xe0e0___reg09_ w 保留位
- 0x00cc, // 0x8543___reg10_ w
- 0x8c5a, // 0x0700___reg11_ w
- 0x00e7, // 0xA066___reg12_ w
- 0x769f, // 0xFFFF___reg13_ w
- 0x6740, // 0xFFE0___reg14_
- 0x07a0, // 0x07a0___reg15_
- 0x9e24, // 0x9E3C___reg16_
- 0x1F00, // 0x1F00___reg17_
- 0xD1D1, // 0xD1c1___reg18_
- 0x300F, // 0x200F___reg19_
- 0x01FF, // 0x01FF___reg20_
- 0xE000, // 0xE000___reg21_
- 0x00ff, // 0x0339___reg22_
- };
- void BK4802::tx()
- {
- // write_16bit(23, 0xa8d0);
- delay(50);
- for (int i = 4; i <= 22; i++)
- {
- if (i == 9)
- continue;
- write_16bit(i, mytxreg[i]);
- }
- for (int i = 2; i >= 0; i--)
- {
- write_16bit(i, mytxfreq[i]);
- }
- delay(50);
- }
- void BK4802::rx()
- {
- // write_16bit(23, 0x98e0);
- for (int i = 4; i <= 22; i++)
- {
- if (i == 9)
- continue;
- write_16bit(i, myrxreg[i]);
- }
- for (int i = 2; i >= 0; i--)
- {
- write_16bit(i, myrxfreq[i]);
- }
- delay(50);
- }
- void BK4802::begin()
- {
- Wire.begin(); // 默认21sda 22scl 也可更换任意管脚 Wire.begin(SDA, SCL); ds1306 0x3c
- }
- void BK4802::begin(u_int8_t SDA, u_int8_t SCL)
- {
- Wire.begin(SDA, SCL); // 默认21sda 22scl 也可更换任意管脚 Wire.begin(SDA, SCL); ds1306 0x3c
- }
- void BK4802::write_16bit(uint8_t nRegAdd, uint16_t nVluee)
- {
- uint8_t high = (nVluee >> 8) & 0xff; // 高8位
- uint8_t low = nVluee & 0xff; // 低8位
- Wire.beginTransmission(BK4802_ADDRESS);
- Wire.write(nRegAdd);
- Wire.write(high);
- Wire.write(low);
- Wire.endTransmission();
- }
- // void BK4802::write_16bit(uint8_t nRegAdd, uint16_t nVluee)
- // {
- // Wire.beginTransmission(BK4802_ADDRESS);
- // Wire.write(nRegAdd);
- // Wire.write((u_int8_t)(nVluee >> 8));
- // Wire.write((u_int8_t)nVluee);
- // Wire.endTransmission();
- // }
- uint16_t BK4802::read_16bit(uint8_t nRegAdd)
- {
- uint8_t _max_wait = 100;
- Wire.beginTransmission(BK4802_ADDRESS);
- Wire.write(nRegAdd);
- Wire.endTransmission(false);
- Wire.requestFrom(BK4802_ADDRESS, 2);
- while (!Wire.available())
- {
- _max_wait--;
- delay(2);
- if (_max_wait == 0)
- {
- Wire.endTransmission();
- Serial.println("IIC error.....NO_ACK...");
- return 0;
- }
- }
- uint8_t highByte = Wire.read(); // 读取高位字节
- uint8_t lowByte = Wire.read(); // 读取低位字节
- uint16_t hexValue = (highByte << 8) | lowByte;
- Wire.endTransmission();
- return hexValue;
- }
- BK4802 bk4802;
复制代码 |
|