主题中讨论的其他器件: DRV5055
我尝试使用 MSP430FR4133上的 ADC 来显示从 DRV5055线性霍尔效应传感器读取的结果。 在设置 ADC 引脚进行读取时、我认为 ADC 的初始化存在一个问题。 我认为我初始化为 ADC 进行读取的引脚始终输出3伏电压、而不是被拉至霍尔效应传感器的电压输出。 我的设置是否有问题会导致这种情况? 我使用在 MSP Academy 中 Resource Explorer ADC Concepts 中找到的示例代码进行设置。
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.
我尝试使用 MSP430FR4133上的 ADC 来显示从 DRV5055线性霍尔效应传感器读取的结果。 在设置 ADC 引脚进行读取时、我认为 ADC 的初始化存在一个问题。 我认为我初始化为 ADC 进行读取的引脚始终输出3伏电压、而不是被拉至霍尔效应传感器的电压输出。 我的设置是否有问题会导致这种情况? 我使用在 MSP Academy 中 Resource Explorer ADC Concepts 中找到的示例代码进行设置。
我刚刚在我的 MSP430FR4133 Launchpad 上运行了此代码、它的功能与您 所期望的一样。 当您仅使用该示例代码时、在运行 调试器时查看 ADC_Result 值应该会获得良好的结果、除非硬件方面有问题。
我喜欢 Bruce 在这里提出的建议、即增加采样保持时间、看看这是否与阻抗相关。
此外、如果您专门使用此代码、并将其打印到 LCD 上、您是否会想到将代码放入文章中? 您的问题可能是由看似不相关的问题引起的。 发布时、"插入"菜单下有一个代码格式工具、可保留可读性。
此致、
Brandon Fisher
// Set all GPIO pins to output low to prevent floating input and reduce power consumption GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0|GPIO_PIN2|GPIO_PIN3|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setOutputLowOnPin(GPIO_PORT_P3, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setOutputLowOnPin(GPIO_PORT_P4, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setOutputLowOnPin(GPIO_PORT_P5, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setOutputLowOnPin(GPIO_PORT_P6, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setOutputLowOnPin(GPIO_PORT_P7, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setOutputLowOnPin(GPIO_PORT_P8, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0|GPIO_PIN2|GPIO_PIN3|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setAsOutputPin(GPIO_PORT_P3, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setAsOutputPin(GPIO_PORT_P4, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setAsOutputPin(GPIO_PORT_P5, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setAsOutputPin(GPIO_PORT_P6, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setAsOutputPin(GPIO_PORT_P7, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); GPIO_setAsOutputPin(GPIO_PORT_P8, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7); //GPIO_setAsInputPin(GPIO_PORT_P1, GPIO_PIN1); // Configure button S1 (P1.2) interrupt GPIO_selectInterruptEdge(GPIO_PORT_P1, GPIO_PIN2, GPIO_HIGH_TO_LOW_TRANSITION); GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN2); GPIO_clearInterrupt(GPIO_PORT_P1, GPIO_PIN2); GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN2); // Set P4.1 and P4.2 as Secondary Module Function Input, LFXT. GPIO_setAsPeripheralModuleFunctionInputPin( GPIO_PORT_P4, GPIO_PIN1 + GPIO_PIN2, GPIO_PRIMARY_MODULE_FUNCTION ); // I2C pins P5SEL0 |= BIT2 | BIT3;
// L0~L26 & L36~L39 pins selected LCD_E_setPinAsLCDFunctionEx(LCD_E_BASE, LCD_E_SEGMENT_LINE_0, LCD_E_SEGMENT_LINE_26); LCD_E_setPinAsLCDFunctionEx(LCD_E_BASE, LCD_E_SEGMENT_LINE_36, LCD_E_SEGMENT_LINE_39); LCD_E_initParam initParams = LCD_E_INIT_PARAM; initParams.clockDivider = LCD_E_CLOCKDIVIDER_3; initParams.muxRate = LCD_E_4_MUX; initParams.segments = LCD_E_SEGMENTS_ENABLED; // Init LCD as 4-mux mode LCD_E_init(LCD_E_BASE, &initParams); // LCD Operation - Mode 3, internal 3.02v, charge pump 256Hz LCD_E_setVLCDSource(LCD_E_BASE, LCD_E_INTERNAL_REFERENCE_VOLTAGE, LCD_E_EXTERNAL_SUPPLY_VOLTAGE); LCD_E_setVLCDVoltage(LCD_E_BASE, LCD_E_REFERENCE_VOLTAGE_2_96V); LCD_E_enableChargePump(LCD_E_BASE); LCD_E_setChargePumpFreq(LCD_E_BASE, LCD_E_CHARGEPUMP_FREQ_16); // Clear LCD memory LCD_E_clearAllMemory(LCD_E_BASE); // Configure COMs and SEGs // L0 = COM0, L1 = COM1, L2 = COM2, L3 = COM3 LCD_E_setPinAsCOM(LCD_E_BASE, LCD_E_SEGMENT_LINE_0, LCD_E_MEMORY_COM0); LCD_E_setPinAsCOM(LCD_E_BASE, LCD_E_SEGMENT_LINE_1, LCD_E_MEMORY_COM1); LCD_E_setPinAsCOM(LCD_E_BASE, LCD_E_SEGMENT_LINE_2, LCD_E_MEMORY_COM2); LCD_E_setPinAsCOM(LCD_E_BASE, LCD_E_SEGMENT_LINE_3, LCD_E_MEMORY_COM3); // Select to display main LCD memory LCD_E_selectDisplayMemory(LCD_E_BASE, LCD_E_DISPLAYSOURCE_MEMORY); // Turn on LCD LCD_E_on(LCD_E_BASE);
第一部分代码是我在 Init_GPIO 函数中的代码、第二部分来自 Init_LCD 函数。 我从 msp430fr4133的开箱即用演示代码中获取了这两个代码。 当我仅运行示例代码时、它实际上会起作用、因此这些代码的设置中可能会出现问题。
您好、卡特、
您将使用 Driverlib 进行 LCD 和 GPIO 初始化。 您是否有任何特殊原因也不会使用 Driverlib ADC 示例?
您可以同时使用 DriverLib 和基于寄存器的代码、但最好只使用一个代码。 它 还可以简化您的代码。
此致、
Brandon Fisher