2023-10-04 12:06 AM
Bonjour,
J'essaie de faire communiquer ma carte Nucleo-723ZG avec un périphérique LIN.
Apriori, ma carte est adapter au protocole LIN et j'arrive à configurer mon périphérique USART1 en LIN.
J'utilise avec ma carte un transceiver LIN.
Quand j'envoi une data sous 8 bits, avec le code suivant:
GPIO_PinState B1_State;
uint8_t pData;
uint16_t Size;
uint32_t Timeout;
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
B1_State=HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin);
pData=0x01;
Size=8;
Timeout=100;
/*Envoi d'une trame appui BP user*/
if (B1_State==1){
while (1)
{
B1_State=HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin);
if (B1_State==0) {
HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_SET);
HAL_UART_Transmit(&huart1, pData, Size, Timeout);
HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET);
break;
}
J'observe ce que j'envoi sur mon bus LIN avec l'oscilloscope, et je ne comprend pas les créneaux que j'obtiens lors de mon envoi.
Je vous contact pour les questions suivantes mêmes si la listes n'est pas du tout exhaustive:
1- Ma carte est- elle capable de gérer le protocole LIN?
2- J'ai un fichier usart.h mais pas de fichier usart.c, est ce normal?
3- La fonction transmit est-elle capable de générer une trame LIN?
--> Dans le principe, comment construire et écrire la trame pour envoyer sur le tx de l'usart1 vers mon transceiver et vers mon LIN?
Merci d'avance pour l'aide.
Bien cordialement,