头像-100813

2bc2ed3736734c35

  • 辽宁省大连市
  • 单片机 嵌入式 EDA/PCB RF/无线 测试测量
  • 工控电子

个人成就

获得 5 次赞

帮助过3人

EEPROM存数据加密问题

读了一个eeprom,已知(00 0E 00 24 AC BD 00 20 AA BE 00 00 38 DD 3E D4)与编号014557有关系,这个加密算法是怎么做的

ESP32 HSPI 读写 W25Q128有人试过吗

rt,esp32 hspi master读写 w25q128,有人试过吗,我写的读设备id从逻辑分析仪上看不对,源码在下面#include <stdio.h> #include <stdbool.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" #include "driver/spi_master.h" #define PIN_NUM_MISO 5 #define PIN_NUM_MOSI 21 #define PIN_NUM_CLK 19 #define PIN_NUM_CS 17 spi_device_handle_t spi; uint8_t test; void app_main() { spi_bus_config_t spi_bus= { .miso_io_num=PIN_NUM_MISO, .mosi_io_num=PIN_NUM_MOSI, .sclk_io_num=PIN_NUM_CLK, .quadwp_io_num=-1, .quadhd_io_num=-1, .max_transfer_sz = 0 , }; spi_bus_initialize(HSPI_HOST, &spi_bus, 0); spi_device_interface_config_t devcfg= { .command_bits = 8 , .address_bits = 24 , .dummy_bits = 3 , .duty_cycle_pos = 0 , .clock_speed_hz=10*1000*1000, //Clock out at 10 MHz .mode=0, //SPI mode 0 .spics_io_num=PIN_NUM_CS, //CS pin .queue_size=7, //We want to be able to queue 7 transactions at a time }; spi_bus_add_device(HSPI_HOST, &devcfg, &spi); spi_transaction_t t ; t.addr=0x000000; t.cmd =0x90; t.length = 56 ; t.rx_buffer = &test ; t.rxlength = 24 ; spi_transaction_ext_t t1 ; t1.address_bits = 24 ; t1.command_bits = 8 ; t1.base = t ; spi_device_transmit(spi,&t); while(1); }

STM32L053 HAL DMA串口接收不定长数据

第一次搞HAL库,百度了下hal库串口接收不定长数据只能串口回调轮询orDMA接收,配置了下DMA初始化一直死机,问下老司机们怎么整的UART_HandleTypeDef Uart1Handle; DMA_HandleTypeDef DMA_USART1_rx; DMA_HandleTypeDef DMA_USART1_tx; int Rx1_flag; int Rx1_cnt ; unsigned char Rx1_buf[129]; unsigned char Tx1_buf[129]; void UART1_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_DMA1_CLK_ENABLE(); /* UART TX GPIO pin configuration */ GPIO_InitStruct.Pin = GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF4_USART1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* UART RX GPIO pin configuration */ GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Alternate = GPIO_AF4_USART1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); Uart1Handle.Instance = USART1; Uart1Handle.Init.BaudRate = 115200; Uart1Handle.Init.WordLength = UART_WORDLENGTH_8B; Uart1Handle.Init.StopBits = UART_STOPBITS_1; Uart1Handle.Init.Parity = UART_PARITY_NONE; Uart1Handle.Init.HwFlowCtl = UART_HWCONTROL_NONE; Uart1Handle.Init.Mode = UART_MODE_TX_RX; Uart1Handle.Init.OverSampling = UART_OVERSAMPLING_16; Uart1Handle.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; Uart1Handle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if(HAL_UART_Init(&Uart1Handle) != HAL_OK) { while(1); } HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USART1_IRQn); __HAL_UART_ENABLE_IT(&Uart1Handle, UART_IT_IDLE); DMA_USART1_rx.Instance = DMA1_Channel3; DMA_USART1_rx.Init.Request = DMA_REQUEST_3; DMA_USART1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; DMA_USART1_rx.Init.PeriphInc = DMA_PINC_DISABLE; DMA_USART1_rx.Init.MemInc = DMA_MINC_ENABLE; DMA_USART1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; DMA_USART1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; DMA_USART1_rx.Init.Mode = DMA_NORMAL; DMA_USART1_rx.Init.Priority = DMA_PRIORITY_LOW; __HAL_LINKDMA(&Uart1Handle,hdmarx,DMA_USART1_rx); if (HAL_DMA_Init(&DMA_USART1_rx) != HAL_OK) { while(1); } DMA_USART1_tx.Instance = DMA1_Channel2; DMA_USART1_tx.Init.Request = DMA_REQUEST_3; DMA_USART1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; DMA_USART1_tx.Init.PeriphInc = DMA_PINC_DISABLE; DMA_USART1_tx.Init.MemInc = DMA_MINC_ENABLE; DMA_USART1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; DMA_USART1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; DMA_USART1_tx.Init.Mode = DMA_NORMAL; DMA_USART1_tx.Init.Priority = DMA_PRIORITY_LOW; if (HAL_DMA_Init(&DMA_USART1_tx) != HAL_OK) { while(1); } __HAL_LINKDMA(&Uart1Handle,hdmatx,DMA_USART1_tx); HAL_NVIC_SetPriority(DMA1_Channel2_3_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Channel2_3_IRQn); HAL_UART_Receive_DMA(&Uart1Handle, Rx1_buf,Rx1_cnt); } void USART1_SendStr(unsigned char *Tx,int length) { HAL_UART_Transmit(&Uart1Handle,Tx,length,0xffff); } void dma_printf(const char *format, ...) { uint32_t length; va_list args; va_start(args, format); length = vsnprintf((char *)Tx1_buf, sizeof(Tx1_buf), (char *)format, args); va_end(args); HAL_UART_Transmit_DMA(&Uart1Handle, (uint8_t *)Tx1_buf, length); } void USART1_IRQHandler(void) { /* USER CODE BEGIN USART2_IRQn 0 */ /* USER CODE END USART2_IRQn 0 */ HAL_UART_IRQHandler(&Uart1Handle); /* USER CODE BEGIN USART2_IRQn 1 */ /* USER CODE END USART2_IRQn 1 */ } 串口相关代码,工程在下面Light_Ctrl.rar

nano100+keil只能debug,reset不工作

nano100+nulink+keilv5,环境配置好编译下载GPIO-LED例程,Debug模式正常,重新上电不工作

关于32邮票孔式样的核心板

大家决定32邮票孔式样的核心板有必要吗,每次做板子都要搞一次最小系统的,想先做一个F1的核心板,64P/100P或者144P的理论上可以做到一个板子上,然后需要什么核心焊什么,外围都焊好了放那,不知道大家什么想法

1到10v电压信号输出隔离

原电路是TLC2272根据前面的输入来输出一个1到10v的电平(线性的),这个电平是用来给一个比例阀提供一个比例量,根据电压大小来控制比例阀的比例调整,现在的问题是模块在工作大约20天之后会坏掉,全都是放大器损坏,且多次更换放大器也没有效果,理论上可以确定不是过流的问题,比例阀自身阻抗就特别高,测的正常工作的时候电流在1ma左右,模块这第一版测试版在电源输入、信号输入/输出都没做隔离,考虑因为模块安装在铣床附近,可能会有大电压的干扰原因,现在想做一个输出电压隔离,平常用的PC817、4N的光耦都没办法做到电压跨度这么大的电流线性度,请问高人还有什么其他办法吗,目前除了我查到金X阳家做的TFXXX的隔离模块能做到0~10v输入,ADI有0~5v的,但是价格都比较昂贵,想看看有没有便宜的方案,在不考虑体积的情况下,谢谢