添加lmx2594测试代码

添加lmx2594测试代码
This commit is contained in:
caiyu 2025-06-17 15:58:39 +08:00
parent d266879ada
commit bd365016e3
4 changed files with 434 additions and 56 deletions

166
MDK-ARM/lmx2594.c Normal file
View File

@ -0,0 +1,166 @@
#include "lmx2594.h"
#include "stm32f0xx.h"
unsigned int LMX2594_Reg[113]=
{
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0001,
0x0001,
0x0064,
0xFFFF,
0x3FFF,
0x0011,
0x0064,
0x0000,
0xB000,
0x0888,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0001,
0x0000,
0x0000,
0x0001,
0x0000,
0x0200,
0x00BF,
0x0000,
0x000C,
0x0A40,
0x0000,
0x003F,
0x0001,
0x0081,
0xC350,
0x0000,
0x03E8,
0x0000,
0x01F4,
0x0000,
0x1388,
0x0000,
0x0322,
0x00A8,
0x0000,
0x0001,
0x8001,
0x0020,
0x0000,
0x0000,
0x0000,
0x0000,
0x0820,
0x0080,
0x0000,
0x4180,
0x0300,
0x0300,
0x07FC,
0xC0DF,
0x0A23,
0x8000,
0x0005,
0x0000,
0x0000,
0x8001,
0x53E2,
0x8304,
0x1F40,
0x0004,
0x0000,
0x1E21,
0x0393,
0x43EC,
0x318C,
0x318C,
0x0488,
0x0002,
0x0DB0,
0x0624,
0x071A,
0x007C,
0x0001,
0x0401,
0xC848,
0x27B7,
0x0064,
0x0110,
0x0080,
0x064F,
0x1E40,
0x4000,
0x5001,
0x0148,
0x10D8,
0x1604,
0x2000,
0x40B2,
0xC802,
0x00C8,
0x0A43,
0x0642,
0x0500,
0x0808,
0x2478,
};
static void DELAY_Nop(uint32_t num)
{
while(num--)
{
__NOP();
}
}
void LMX2594_Init()
{
unsigned int y=0,j;
LmxWrite(0,0x0002);//soft reset
DELAY_Nop(500);
LmxWrite(0,0x0000);//cancel reset
DELAY_Nop(500);
DELAY_Nop(500);
DELAY_Nop(500);
// VCO_Caliberation();
for(y=113;y>6;y--)
{
LmxWrite(113-y,LMX2594_Reg[y-1]);
DELAY_Nop(100);
j=lmxRead(113-y);
/*while(j!=LMX2594_Reg[y-1])
{
//WDT_CONTR=0x25;//?????
LMX2594_TXData(113-y,LMX2594_Reg[y-1]);
j=LMX2594_RXData(113-y);
}
//WDT_CONTR|= 0x10;//??*/
}
// WDT_CONTR= 0x00;//????
DELAY_Nop(5000);
//delay_ms(10); //??10ms
//lmx.R0.FCAL_EN=1; //??FCAL_EN=1????????R0,???VCO?????????
LmxWrite(0,0x2478);//lmx_wr(0,lmx.R0.REG0);
}

127
MDK-ARM/lmx2594.h Normal file
View File

@ -0,0 +1,127 @@
#ifndef LMX2594_PARAMETERS_H_
#define LMX2594_PARAMETERS_H_
#include <stdint.h>
struct lmx2594_reg_data {
uint8_t reg;
uint16_t val;
};
/* REGISTER SUMMARY : (LMX_2594) */
#define LMX2594_REG0 0x000
#define LMX2594_REG1 0x001
#define LMX2594_REG2 0x002
#define LMX2594_REG3 0x003
#define LMX2594_REG4 0x004
#define LMX2594_REG5 0x005
#define LMX2594_REG6 0x006
#define LMX2594_REG7 0x007
#define LMX2594_REG8 0x008
#define LMX2594_REG9 0x009
#define LMX2594_REG10 0x00A
#define LMX2594_REG11 0x00B
#define LMX2594_REG12 0x00C
#define LMX2594_REG13 0x00D
#define LMX2594_REG14 0x00E
#define LMX2594_REG15 0x00F
#define LMX2594_REG16 0x010
#define LMX2594_REG17 0x011
#define LMX2594_REG18 0x012
#define LMX2594_REG19 0x013
#define LMX2594_REG20 0x014
#define LMX2594_REG21 0x015
#define LMX2594_REG22 0x016
#define LMX2594_REG23 0x017
#define LMX2594_REG24 0x018
#define LMX2594_REG25 0x019
#define LMX2594_REG26 0x01A
#define LMX2594_REG27 0x01B
#define LMX2594_REG28 0x01C
#define LMX2594_REG29 0x01D
#define LMX2594_REG30 0x01E
#define LMX2594_REG31 0x01F
#define LMX2594_REG32 0x020
#define LMX2594_REG33 0x021
#define LMX2594_REG34 0x022
#define LMX2594_REG35 0x023
#define LMX2594_REG36 0x024
#define LMX2594_REG37 0x025
#define LMX2594_REG38 0x026
#define LMX2594_REG39 0x027
#define LMX2594_REG40 0x028
#define LMX2594_REG41 0x029
#define LMX2594_REG42 0x02A
#define LMX2594_REG43 0x02B
#define LMX2594_REG44 0x02C
#define LMX2594_REG45 0x02D
#define LMX2594_REG46 0x02E
#define LMX2594_REG47 0x02F
#define LMX2594_REG48 0x030
#define LMX2594_REG49 0x031
#define LMX2594_REG50 0x032
#define LMX2594_REG51 0x033
#define LMX2594_REG52 0x034
#define LMX2594_REG53 0x035
#define LMX2594_REG54 0x036
#define LMX2594_REG55 0x037
#define LMX2594_REG56 0x038
#define LMX2594_REG57 0x039
#define LMX2594_REG58 0x03A
#define LMX2594_REG59 0x03B
#define LMX2594_REG60 0x03C
#define LMX2594_REG61 0x03D
#define LMX2594_REG62 0x03E
#define LMX2594_REG63 0x03F
#define LMX2594_REG64 0x040
#define LMX2594_REG65 0x041
#define LMX2594_REG66 0x042
#define LMX2594_REG67 0x043
#define LMX2594_REG68 0x044
#define LMX2594_REG69 0x045
#define LMX2594_REG70 0x046
#define LMX2594_REG71 0x047
#define LMX2594_REG72 0x047
#define LMX2594_REG73 0x049
#define LMX2594_REG74 0x04A
#define LMX2594_REG75 0x04B
#define LMX2594_REG76 0x04C
#define LMX2594_REG77 0x04D
#define LMX2594_REG78 0x04E
#define LMX2594_REG79 0x04F
#define LMX2594_REG80 0x050
#define LMX2594_REG81 0x051
#define LMX2594_REG82 0x052
#define LMX2594_REG83 0x053
#define LMX2594_REG84 0x054
#define LMX2594_REG85 0x055
#define LMX2594_REG86 0x056
#define LMX2594_REG87 0x057
#define LMX2594_REG88 0x058
#define LMX2594_REG89 0x059
#define LMX2594_REG90 0x05A
#define LMX2594_REG91 0x05B
#define LMX2594_REG92 0x05C
#define LMX2594_REG93 0x05D
#define LMX2594_REG94 0x05E
#define LMX2594_REG95 0x05F
#define LMX2594_REG96 0x060
#define LMX2594_REG97 0x061
#define LMX2594_REG98 0x062
#define LMX2594_REG99 0x063
#define LMX2594_REG100 0x064
#define LMX2594_REG101 0x065
#define LMX2594_REG102 0x066
#define LMX2594_REG103 0x067
#define LMX2594_REG104 0x068
#define LMX2594_REG105 0x069
#define LMX2594_REG106 0x06A
#define LMX2594_REG107 0x06B
#define LMX2594_REG108 0x06C
#define LMX2594_REG109 0x06D
#define LMX2594_REG110 0x06E
#define LMX2594_REG111 0x06F
#define LMX2594_REG112 0x070
#endif /* LMX2594_PARAMETERS_H_ */

View File

@ -156,6 +156,27 @@ void LmxWrite(uint8_t regadr,uint16_t dat)
Lmx_CSB_SET(); //ƬѡʧЧ//
}
void LmxWrite32(uint32_t data)
{
uint8_t regadr = (data&0xff0000)>>16;
uint16_t dat = (data&0xffff);
printf("write addr 0x%02x 0x%04x\r\n",regadr,dat);
regadr=regadr&0x7f; //将寄存器地址最高位置0确保为写操作//
Lmx_CSB_RESET(); //片选信号拉低//
DELAY_Nop(50);
Lmx_SCK_RESET();
DELAY_Nop(50);
spi_8bit(regadr); //送出地址//
spi_16bit(dat); //送出数据//
DELAY_Nop(50);
Lmx_CSB_SET(); //片选失效//
}
void LmxPortReset(void)
{
Lmx_CSB_SET(); //ƬѡʧЧ//
@ -216,53 +237,52 @@ void Lmx_PortIntit(void)
void SetLmxParameter(void)
{
lmx.LMX_R70.All= 0x0000;
lmx.LMX_R69.All= 0x0000;
lmx.LMX_R68.All= 0x0000;
lmx.LMX_R64.All= 0x0000;
lmx.LMX_R62.All= 0x0000;
lmx.LMX_R61.All= 0x0000;
lmx.LMX_R59.All= 0x0000;
lmx.LMX_R48.All= 0x03FC;
lmx.LMX_R47.All= 0x00E6;
lmx.LMX_R46.All= 0x1421;
lmx.LMX_R45.All= 0x0000;
lmx.LMX_R44.All= 0x0000;
lmx.LMX_R43.All= 0x0000;
lmx.LMX_R42.All= 0x0000;
lmx.LMX_R41.All= 0x00C8;
lmx.LMX_R40.All= 0x0000;
lmx.LMX_R39.All= 0x8104;
lmx.LMX_R38.All= 0x00C0;
lmx.LMX_R37.All= 0x5000;
lmx.LMX_R36.All= 0x0C41;
lmx.LMX_R35.All= 0x119B;
lmx.LMX_R34.All= 0xC3EA;
lmx.LMX_R33.All= 0x0000;
lmx.LMX_R32.All= 0x0000;
lmx.LMX_R31.All= 0x0601;
lmx.LMX_R30.All= 0x0034;
lmx.LMX_R29.All= 0x0000;
lmx.LMX_R28.All= 0x0000;
lmx.LMX_R25.All= 0x0000;
lmx.LMX_R24.All= 0x0000;
lmx.LMX_R23.All= 0x0000;
lmx.LMX_R22.All= 0x0000;
lmx.LMX_R20.All= 0x0000;
lmx.LMX_R19.All= 0x0000;
lmx.LMX_R14.All= 0x0084;
lmx.LMX_R13.All= 0x4003;
lmx.LMX_R12.All= 0x7001;
lmx.LMX_R11.All= 0x0018;
lmx.LMX_R10.All= 0x10D8;
lmx.LMX_R9.All =0x0000;
lmx.LMX_R8.All =0x0000;
lmx.LMX_R7.All =0x0000;
lmx.LMX_R4.All =0x0700;
lmx.LMX_R2.All =0x0000;
lmx.LMX_R1.All =0x0808;
lmx.LMX_R0.All =0x220C;
lmx.LMX_R69.All= 0x0000;
lmx.LMX_R68.All= 0x0000;
lmx.LMX_R64.All= 0x0000;
lmx.LMX_R62.All= 0x0000;
lmx.LMX_R61.All= 0x0000;
lmx.LMX_R59.All= 0x0000;
lmx.LMX_R48.All= 0x03FC;
lmx.LMX_R47.All= 0x00E6;
lmx.LMX_R46.All= 0x1421;
lmx.LMX_R45.All= 0x0000;
lmx.LMX_R44.All= 0x0000;
lmx.LMX_R43.All= 0x0000;
lmx.LMX_R42.All= 0x0000;
lmx.LMX_R41.All= 0x00C8;
lmx.LMX_R40.All= 0x0000;
lmx.LMX_R39.All= 0x8104;
lmx.LMX_R38.All= 0x00C0;
lmx.LMX_R37.All= 0x5000;
lmx.LMX_R36.All= 0x0C41;
lmx.LMX_R35.All= 0x119B;
lmx.LMX_R34.All= 0xC3EA;
lmx.LMX_R33.All= 0x0000;
lmx.LMX_R32.All= 0x0000;
lmx.LMX_R31.All= 0x0601;
lmx.LMX_R30.All= 0x0034;
lmx.LMX_R29.All= 0x0000;
lmx.LMX_R28.All= 0x0000;
lmx.LMX_R25.All= 0x0000;
lmx.LMX_R24.All= 0x0000;
lmx.LMX_R23.All= 0x0000;
lmx.LMX_R22.All= 0x0000;
lmx.LMX_R20.All= 0x0000;
lmx.LMX_R19.All= 0x0000;
lmx.LMX_R14.All= 0x0084;
lmx.LMX_R13.All= 0x4003;
lmx.LMX_R12.All= 0x7001;
lmx.LMX_R11.All= 0x0018;
lmx.LMX_R10.All= 0x10D8;
lmx.LMX_R9.All =0x0000;
lmx.LMX_R8.All =0x0000;
lmx.LMX_R7.All =0x0000;
lmx.LMX_R4.All =0x0700;
lmx.LMX_R2.All =0x0000;
lmx.LMX_R1.All =0x0808;
lmx.LMX_R0.All =0x220C;
}
@ -321,14 +341,72 @@ LL_mDelay(50);
DELAY_Nop(500000);
DELAY_Nop(500000);
DELAY_Nop(500000);
LmxWrite(0,lmx.LMX_R0.All);
DELAY_Nop(500000);
LmxWrite(0,lmx.LMX_R0.All);
}
void SetLmxFreq2594(void)
{
LL_mDelay(50);
LmxWrite(0,0x2204); //reset device; en ld; pfd>10M;power up
LL_mDelay(50);
LmxWrite(70,lmx.LMX_R70.All);
LmxWrite(69,lmx.LMX_R69.All);
LmxWrite(68,lmx.LMX_R68.All);
LmxWrite(64,lmx.LMX_R64.All);
LmxWrite(62,lmx.LMX_R62.All);
LmxWrite(61,lmx.LMX_R61.All);
LmxWrite(59,lmx.LMX_R59.All);
LmxWrite(48,lmx.LMX_R48.All);
LmxWrite(47,lmx.LMX_R47.All);
LmxWrite(46,lmx.LMX_R46.All);
LmxWrite(45,lmx.LMX_R45.All);
LmxWrite(44,lmx.LMX_R44.All);
LmxWrite(43,lmx.LMX_R43.All);
LmxWrite(42,lmx.LMX_R42.All);
LmxWrite(41,lmx.LMX_R41.All);
LmxWrite(40,lmx.LMX_R40.All);
LmxWrite(39,lmx.LMX_R39.All);
LmxWrite(38,lmx.LMX_R38.All);
LmxWrite(37,lmx.LMX_R37.All);
LmxWrite(36,lmx.LMX_R36.All);
LmxWrite(35,lmx.LMX_R35.All);
LmxWrite(34,lmx.LMX_R34.All);
LmxWrite(33,lmx.LMX_R33.All);
LmxWrite(32,lmx.LMX_R32.All);
LmxWrite(31,lmx.LMX_R31.All);
LmxWrite(30,lmx.LMX_R30.All);
LmxWrite(29,lmx.LMX_R29.All);
LmxWrite(28,lmx.LMX_R28.All);
LmxWrite(25,lmx.LMX_R25.All);
LmxWrite(24,lmx.LMX_R24.All);
LmxWrite(23,lmx.LMX_R23.All);
LmxWrite(22,lmx.LMX_R22.All);
LmxWrite(21,lmx.LMX_R21.All);
LmxWrite(20,lmx.LMX_R20.All);
LmxWrite(19,lmx.LMX_R19.All);
LmxWrite(14,lmx.LMX_R14.All);
LmxWrite(13,lmx.LMX_R13.All);
LmxWrite(12,lmx.LMX_R12.All);
LmxWrite(11,lmx.LMX_R11.All);
LmxWrite(10,lmx.LMX_R10.All);
LmxWrite(9,lmx.LMX_R9.All);
LmxWrite(8,lmx.LMX_R8.All);
LmxWrite(7,lmx.LMX_R7.All);
LmxWrite(3,lmx.LMX_R3.All);
LmxWrite(2,lmx.LMX_R2.All);
LmxWrite(1,lmx.LMX_R1.All);
DELAY_Nop(500000);
DELAY_Nop(500000);
DELAY_Nop(500000);
LmxWrite(0,lmx.LMX_R0.All);
DELAY_Nop(500000);
LmxWrite(0,lmx.LMX_R0.All);
}
//check LD
//configure the register again,when check the LD is low

View File

@ -254,14 +254,18 @@ int main(void)
LL_ADC_Enable(ADC1);
Lmx_PortIntit();
lv_init(); // LittleVgl (6.0)
SetLmxParameter();
// SetLmxParameter();
/* USER CODE BEGIN 2 */
ILI9341_init();
// 设置可以读取寄存器
// LmxWrite32(0x230132);
short read111 = lmxRead(68);
LL_mDelay(100);
//short read111 = lmxRead(68);
//LL_mDelay(100);
/*
static lv_color_t disp_buf1[320 * 10] = {0};
static lv_disp_draw_buf_t buf;
lv_disp_draw_buf_init(&buf, disp_buf1, NULL, 320 * 10);
@ -418,15 +422,17 @@ int main(void)
LL_mDelay(250);
LMX2592_WRITE_FREQ(4000.0);
*/
//LMX2592_WRITE_FREQ(4000.0);
int i = 0;
LMX2594_Init();
while (1)
{
i++;
if(i > 30){
/*
read111 = lmxRead(68);
if((read111&(0x03<<9) == 0) || (read111&(0x03<<9) == 1) || (read111&(0x03<<9) == 2)){
if(gOut)
@ -439,6 +445,7 @@ int main(void)
else
lv_label_set_text(label2, "#000000 state: # #00ff00 locked# #ff0000 off#"); //????
}
*/
i = 0;
}