一、簡介
stm32isp是一款基於STM32芯片的ISP編程工具,支持通過串口或CAN總線進行STM32固件的下載和更新。它是基於一些開源的ISP程序源代碼進行修改和開發的,可以廣泛地應用於各種STM32芯片的編程工作。
二、主要功能
stm32isp的主要功能集中在支持各種STM32芯片的下載和更新。它可以通過以下方式進行配置和使用:
1、配置串口或CAN總線接口參數。
/**
* @brief 串口或CAN總線接口初始化函數
* @param baudrate 波特率
* @return None
* @note 使用USART1或CAN1進行串口或CAN總線通信
*/
void USART_Configuration(uint32_t baudrate)
{
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
USART_InitStructure.USART_BaudRate = baudrate;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
2、下載或更新STM32固件。
/**
* @brief 從串口或CAN總線下載或更新STM32固件
* @param None
* @return None
* @note 設置下載模式後,發送「0x7F」代表進入BootLoader,
* 然後等待STM32 BootLoader回復「ACK」合法後發送下載數據包
* 和相應的校驗碼,並且檢查bootloader返回值
*/
void Download_Program(void)
{
uint32_t addr = ApplicationAddress;
uint16_t len = 0;
uint8_t x, data;
uint16_t temp;
if (Update_Mode == UART_MODE) {
if (USART_ByteRead(&data) == 0) {
if (data == ADDR_MODE_1) {
USART_ByteWrite(0x00);
USART_ByteWrite(0xFF);
USART_ByteWrite(0x00);
USART_ByteWrite(0xFF);
} else if (data == Data_MODE_2) {
temp = STM32_GetFirmwareInfo(addr, &len);
if (temp == SR_SUCCESS) {
STM32_SendACK();
x = temp >> 8;
x += 0x30;
USART_ByteWrite(x);
USART_ByteWrite(((uint8_t)temp & 0xff) + 0x30);
Checksum_Write((uint8_t)x + ((uint8_t)temp & 0xff));
for (int i = 0; i < len;) {
STM32_YmodemReceive(&yx_buffer[i], &block_number, &char_counter);
i += char_counter;
}
RefreshStatus(uint8_t Downloadsucess);
}
}else if (data == End_MODE_3) {
JumpAddress = STM32_ReadJumpAddress();
Jump_To_Application();
}
}
}else if (Update_Mode == CAN_MODE){
//...
}
}
3、檢測STM32是否處於BootLoader模式。
/**
* @brief 檢測STM32是否進入BootLoader模式
* @param None
* @retval 1:處於bootloader模式;0:未進入
*/
uint8_t CheckForEnterBootloader(void)
{
static uint8_t TryEnterBootLoader = 3;
if (!TryEnterBootLoader)
return 0;
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0) {
--TryEnterBootLoader;
DelayXms(20);
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0) {
return 1;
}
}
return 0;
}
三、優勢
通過stm32isp工具,我們可以避免使用JTAG調試和ACU算法的複雜性和高成本,同時縮短了開發周期。目前STM32芯片應用廣泛,而stm32isp已經廣泛應用於各種工業自動化控制、電力電子控制以及通信設備中,提高了產品的可靠性和生產效率。
四、缺點
stm32isp工具需要在線下載和更新STM32固件,一旦出現意外中斷,就會導致芯片燒錄失敗,同時對於某些低端STM32芯片,由於內部Flash的容量限制,stm32isp很可能會導致燒錄失敗。
五、應用場景
stm32isp工具廣泛應用於以下幾個方面:
1、工業自動化控制和電力電子產品的生產和燒錄;
2、國防軍工和醫療設備的開發和調試;
3、通信設備和家庭電器中的固件下載和更新。
六、總結
stm32isp作為一款基於STM32芯片的ISP編程工具,具有快速、高效、低成本等特點,成為許多工業製品自動化生產過程中的重要利器,同時,也在國防軍工和醫療設備開發中扮演着重要角色。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/256628.html