This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C123GH6PM:Lora 连接 Tiva C 系列微控制器

Guru**** 2484615 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/731511/tm4c123gh6pm-lora-interfacing-with-tiva-c-series-microcontroller

器件型号:TM4C123GH6PM

您好!

通过 UART 通信连接微型芯片的 Lora 模块 RN2483时遇到问题。

当 我直接将数据馈送到其中时、lux 变量会成功地以十六进制格式进行传输、同时 我尝试传输 fAmbient 数据、该数据在通过 I2C 总线收集的每个样本上都会发生变化。 我在另一端接收的是0。

我正在下面粘贴代码、请 提供帮助。

#include 
#include 
#include 
#include 
#include "inc/hw_memmap.h"
#include "inc/hw_ints.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/adc.h"
#include "driverlib/pin_map.h"
#include "driverlib_rtsensorlib_ram_zh"








#include "driverlib_rtsensorlib_ram_ram_ultrintrab#include "#include "#include "#include "#intrab.ultrab.ultrab.hru.hru.hru.hruatm#include "#include "#include "#include "#include "#include "#include "#包含"rom_rom_config.ultrintrintrab.ultrab.ultrab.ultrab.ultrat_in_in_config.h"#include "#include "#include "#include "#include "#"#include "#include "rom_rom.ultrattrintrintrab.ultrintrab.ultrab.ultrab.hr"





void stringToHex (char *luxResult);

char packet[25]="radio TX ";
char buffer[50]="";
void concatate();


fAmbient;
float lux;

uint32_t ui32ADC0Value[4];
uint32_t ui32ADC3Value[4];
易失性 uint32_t ui32TempAvg;
易失性 uint32_t ui32TempValueC;

#define debug
#define ISL29st_I2C_address 0x44 // ISL29023 I2C address tI223_t ui32TempValueC;volatile
unsigned /i2intrads/i2ins/i2instructure/i2ins/i2instructure/i2in/i2in/i2inflag unsign/i2in/i2in/i2in/i2inflag/i2in/i2in/i2inflag/i20in/i20in/i2in/i2in/i20in/in






void ISL29023AppCallback (void *pvCallbackData、uint_fast8_t ui8Status)
{
if (ui8Status = I2CM_STATUS_SUCCESS)
{
g_vui8DataFlag = 1;
}
Errorg_vui8Filename = ui8Status;
}

void ISL29023I2CM_STATUS_SUP= 1

(void i2c.h)






}




* Int (i2p2c.h)

if (g_vui8CtlFlag)
{ISL29023AppErrorHandler
(pcCtlFilename、ui32Line);
}
g_vui8DataFlag = 0;
}

int main (void)
{

SysCtl_SYSDIV_5|SYSCTL_USE_PLL|SysCtl_XT_16MHz_ADC0_ADCP0/ SYSC_ADC0_ADCP0_SEND




(即、SYSC_ADCPL_ADCP0_ADCP0_ADCP_ADCPTRIGGPT_0);ENTRIGGPT_ADCP_ADCP_0 (SYSC_ADCP_ADCP_ADCP_ADCP_0和 SYSC_ENTRIGGPT_ADCP_ADCP_ADCP_0)

2、0、ADC_CTL_TS | ADC_CTL_IE |
ADC_CTL_END);
ADCSequenceStepConfigure (ADC0_BASE、3、0、ADC_CTL_CH1 | ADC_CTL_IE |
ADC_CTL_END);


ADCSequenceEnable (ADC0_BASE、3);
ADC0 (BASE);ADC0 (ADCK_Enable)
//UART 0
SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
GPIOPinTypeUART (GPIO_Porta_base、 GPIO_PIN_0 | GPIO_PIN_1);
UARTConfigSetExpClk (UART0_BASE、SysCtlClockGet ()、57600、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_Two | UART_CONFIG_PAR_NONE);

//SysCtlClockPeripheralEnable (UART1_UART1_PERIPBH

)
;UART1_UART1_UPILOP1PORT_1 (UIPB_PUTx);GPIOPT1_UIP_1配置 GPIOPT1_UIP_PON_PON_PONPON_ON (UIP_P1PORT1_ON)

GPIOPinTypeUART (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);
UARTConfigSetExpClk (UART1_BASE、SysCtlClockGet ()、57600、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
//loraConfigure();


// I2C 配置
SysCtlPeripheralEnable (SYSCTL_Periph_I2C3);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
GPSCOPIN0_Configure (GPIOPTL_PGC0);
GPIOPinConfigure (GPIO_PD1_I2C3SDA);
GPIOPinTypeI2CSCL (GPIO_PORTD_BASE、GPIO_PIN_0);
GPIOPinTypeI2C (GPIO_PORTD_BASE、GPIO_PIN_1);

I2CMInit (&g_sI2CInst、I2C3_base、INT_I2C3、0xFF、0xFF、 SysCtlClockGet ();
SysCtlDelay (SysCtlClockGet ()/ 3);

//初始化传感器
ISL29023Init (&G) sISL29023Inst、&g_sI2CInst、ISL29023_I2C_address、ISL29023AppCallback、 &sISL29023Inst);
ISL29023AppI2CWait (__file___,__line__);
ISL29023ReadModifyWrite (&g_sISL29023Inst、ISL29023_O_CMD_I, ISL29023_CMD_I_OP_MODE_M、
ISL29023_CMD_I_OP_MODE_ALS_CONT、
ISL29023AppCallback、&g_sISL29023Inst);
ISL29023AppI2CWait (__file__、 __LINE__);

while (1)
{
ISL29023DataRead (&g_sISL29023Inst、ISL29023AppCallback、&g_sISL29023Inst);
ISL29023AppI2CWait (__file__、 _LINE__);
ISL29023DataLightVisibleGetFloat (&g_sISL29023Inst、&fAmbient);

//计算 CPU 温度
//清除 ADC0的中断标志,SEQUENCER 1
ADCIntC0ar (ADC0_BASE,1);
//为 ADC 0模块提供触发器,ADC32_BASE

(ADC32_ADC0);ADC32_ADC32uValue 转换为 ADC08_ADC0;ADC32uST/ ADC0 (ADC32u_BASE)


ui32TempAvg =(ui32ADC0Value[0]+ ui32ADC0Value[1]+ ui32ADC0Ctl[2]+ ui32ADC04096[3]+ 2)/4;ui32ADC0Value[0]
=(1475 * u32ADTempCtl)/ u32ADC040969[3]+ U32ADC2000"(








r/




);rende100/(rendeSr)、通过命令来计算数据包0、发送/发送/发送/发送/发送/发送/发送/发送/接收/发送/接收/发送/接收/发送

{
uint8_t

answer=0;
while (* atCommand!='0')
{
UARTCharPut (UART1_base、* atcon* Expected_answer);
atCommand++;
}
SysCtlDelay (4000000);// 100ms delwhile
(UART1_base、'UART0'










);}"UART0\UART000"(UART0_deltale\UART000"(UART0");}UART0_dele\UART000"(UART000"(UART0_dele\UART000");





COND=sendATCommand ("无线电设置 FREQ 868100000\r\n\0"、"OK\0");
SysCtlDelay (400000);
CR=sendATCommand ("无线电设置 FREQ\r\n"0、"868100000\0");
SysCtlDelay (400000);CR=sendATCommand (
\n"4)、

"SYNCED"



(

0)、"SYN\n"f 命令\n"400000"(0)、"SYN\n"SYENDCOND (0)、"4)、"SYNCED\n"0\SYN"(0)、"SYN"(0)、"SYSRD\n"0\SYN\SYN\SYN\SYN"(0








void stringToHex (char *luxResult)
{

char *pbuffer = buffer;
int i;
int len=strlen (luxResult;
for (i=0);<len;i++) { sprintf(pbuffer, "%x", luxResult[i]); pbuffer +=2; }




}
void 级联()
{
int count=9、i=0;
while (buffer[i]!='0')
{
packet[count]=buffer[i];
count++;
i++;
}
packet[count++]='\r\n';
packet[count+]='\n';
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stephen、

    您是否检查了 UART 线路以查看是否发送了数据? 您是否能够打印文本字符串或其他数据?

    如果唯一出现打印问题的数据是源自浮点的数据、例如"lux"、则我们可以将重点放在浮点到十六进制转换链上。