From bd365016e3739f346700b1b219b9ffae0cc0977c Mon Sep 17 00:00:00 2001 From: caiyu <290198250@qq.com> Date: Tue, 17 Jun 2025 15:58:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0lmx2594=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加lmx2594测试代码 --- MDK-ARM/lmx2594.c | 166 ++++++++++++++++++++++++++++++++++++++++++ MDK-ARM/lmx2594.h | 127 +++++++++++++++++++++++++++++++++ MDK-ARM/lmx2595.c | 178 +++++++++++++++++++++++++++++++++------------- MDK-ARM/startup.c | 19 +++-- 4 files changed, 434 insertions(+), 56 deletions(-) create mode 100644 MDK-ARM/lmx2594.c create mode 100644 MDK-ARM/lmx2594.h diff --git a/MDK-ARM/lmx2594.c b/MDK-ARM/lmx2594.c new file mode 100644 index 0000000..fdcf0dc --- /dev/null +++ b/MDK-ARM/lmx2594.c @@ -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); + +} \ No newline at end of file diff --git a/MDK-ARM/lmx2594.h b/MDK-ARM/lmx2594.h new file mode 100644 index 0000000..0332faf --- /dev/null +++ b/MDK-ARM/lmx2594.h @@ -0,0 +1,127 @@ +#ifndef LMX2594_PARAMETERS_H_ +#define LMX2594_PARAMETERS_H_ + +#include + + +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_ */ diff --git a/MDK-ARM/lmx2595.c b/MDK-ARM/lmx2595.c index 7a4c1d8..e303e1f 100644 --- a/MDK-ARM/lmx2595.c +++ b/MDK-ARM/lmx2595.c @@ -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 diff --git a/MDK-ARM/startup.c b/MDK-ARM/startup.c index 020d683..793a03e 100644 --- a/MDK-ARM/startup.c +++ b/MDK-ARM/startup.c @@ -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; }