⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mc145162at91rm9200.txt

📁 这个我是我才看到的
💻 TXT
字号:
无绳电话PLL控制芯片MC145162驱动源码at91rm9200(作者:gliethttp)

1.MC145162.c源码文件

//****

#include <MC145162.h>

//---

uint8   MCControlR;

uint16 MC14bitsAuxCount;

uint16 MC12bitsRefCount;

uint16 MCTxCount;

uint16 MCRxCount;

uint32 MC32bitsBuf;

#define MC145162_DEBUG_OUT 1

//---

//MC145162初始化

void MC145162_Mod_Setup(void);

void MC145162_Mod_Reference(void);

void MC145162_Tx_Rx_Counter(void);

void MC145162_ini(void)

{

MCControlR          = 0x88;

MC14bitsAuxCount    = 10240;

MCTxCount           = 39983;

MCRxCount           = 45180;

MC145162_Pin_Install();

MC145162_Mod_Setup();

MC145162_Mod_Reference();

MC145162_Tx_Rx_Counter();

}

//---

//发送control命令集

void MC145162_SendData(uint32 data,uint8 bits,uint8 mod);

void MC145162_Mod_Setup(void)

{

#define MC145162_TEST_BIT_OUTPUT 1

MC32bitsBuf = MCControlR | 0x80;

#if MC145162_TEST_BIT_OUTPUT

MC32bitsBuf |= 0x20;

#endif

MC32bitsBuf <<= 24;

MC145162_Pin_Enb(1);

MC145162_SendData(MC32bitsBuf,8,false);

MC145162_Pin_Enb(0);

}

//---

//发送reference命令集

void MC145162_Mod_Reference(void)

{

if(MC14bitsAuxCount > 16383)MC14bitsAuxCount = 16383;

if(MC12bitsRefCount >  4095)MC12bitsRefCount  = 4095;

if(MC14bitsAuxCount <     16)MC14bitsAuxCount = 16;

if(MC12bitsRefCount <     16)MC12bitsRefCount = 16;

#if MC145162_DEBUG_OUT

{static char data[50];

sprintf(data,"MCA=%d\r\n",MC14bitsAuxCount);

dprintf(data);

}

#endif

#define MC145162_Mod_Reference_Bit_AUX (0x01                << 30)

#define MC145162_Mod_Reference_Bit_Tx0 (0x00                << 29)

#define MC145162_Mod_Reference_Bit_Rx0 (0x00                << 28)

#define MC145162_Mod_Reference_12B_REF (MC12bitsRefCount    << 16)

#define MC145162_Mod_Reference_Bit_RS1 (0x00                << 15)

#define MC145162_Mod_Reference_Bit_RS2 (0x00                << 14)

#define MC145162_Mod_Reference_Bit_AUXD(MC14bitsAuxCount    <<  0)

MC32bitsBuf =   MC145162_Mod_Reference_Bit_AUX |

MC145162_Mod_Reference_Bit_Tx0 |

MC145162_Mod_Reference_Bit_Rx0 |

MC145162_Mod_Reference_12B_REF |

MC145162_Mod_Reference_Bit_RS1 |

MC145162_Mod_Reference_Bit_RS2 |

MC145162_Mod_Reference_Bit_AUXD;

MC145162_Pin_Enb(1);

MC145162_SendData(MC32bitsBuf,32,false);

MC145162_Pin_Enb(0);

}

//---

//发送counter分频命令集

void MC145162_Tx_Rx_Counter(void)

{

if(MCTxCount < 16)MCTxCount = 16;

if(MCRxCount < 16)MCRxCount = 16;

MC32bitsBuf = (MCTxCount << 16) | MCRxCount;

#if MC145162_DEBUG_OUT

{static char data[50];

sprintf(data,"MCTxCount=%d\r\nMCRxCount=%d\r\n" ,MCTxCount,MCRxCount);

dprintf(data);

}

#endif

MC145162_Pin_Enb(0);

MC145162_SendData(MC32bitsBuf,32,true);

}

//---

//数据发送子函数

void MC145162_SendData(uint32 data,uint8 bits,uint8 mod)

{uint8 i;

if(bits)bits--;

for(i = 0;i < bits;i++)

{

MC145162_Pin_Din(data&0x80000000);

MC145162_Pin_Clk(1)

MC145162_Pin_Clk(0);

Data <<= 1;

}

MC145162_Pin_Din(data&0x80000000);

MC145162_Pin_Clk(1)

if(mod){MC145162_Pin_Enb(1);}

MC145162_Pin_Clk(0);

if(mod){MC145162_Pin_Enb(0);}

}

 

2.MC145162.h源码文件

#include <misc.h>

/*

MC14bitsAuxCount    : 16 ~ 16383

MC12bitsRefCount    : 16 ~ 4095

MCTxCount           : 16 ~ 65535

MCRxCount           : 16 ~ 65535

*/

#define MC145162_BASE_PIO               AT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -