CC1310-把ADC例程移植到不同封装时和flash管脚冲突的问题
在CC1310的launchpad上调试通过的ADC代码移植到自己画的PCB上面的时候遇到了一个小问题:启动的时候总是会进入AD转换失败的循环里面,如图

launchpad和自己画的PCB差别在于:
1,launchpad用的是1310F128RGZ,带一个spi-flash,而自己PCB上用的是1310F32RHB,没有flash;
2,代码移植时在.cmd文件里面修改了flash大小,有个flash管脚(IO20)在RHB封装上没有所以直接注释了(在代码里面没看到和flash相关的操作,之前在自己PCB上面测试RF相关参数的时候也是能正常测试的,所以当时推断应该不会用到flash);
搜了一下launchpad的板载flash作用,貌似仅仅和固件升级有关?……
所以疑问在于,launchpad上的flash(AD例程里面单次和序列都测试过了,一样的效果)起一个什么作用?是否必须?还是说这个问题是由封装差异导致的?还是别的问题……?
谢谢
进一步测试,把管脚初始化列表里面除串口外的全部管脚注释掉,在launchpad上面也是没问题的:
const PIN_Config BoardGpioInitTable[] = {
//CC1310_LAUNCHXL_PIN_RLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
//CC1310_LAUNCHXL_PIN_GLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
//CC1310_LAUNCHXL_PIN_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_HYSTERESIS, /* Button is active low */
//CC1310_LAUNCHXL_PIN_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_HYSTERESIS, /* Button is active low */
//CC1310_LAUNCHXL_SPI_FLASH_CS | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MIN, /* External flash chip select */
CC1310_LAUNCHXL_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN, /* UART RX via debugger back channel */
CC1310_LAUNCHXL_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL, /* UART TX via debugger back channel */
//CC1310_LAUNCHXL_SPI0_MOSI | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master out - slave in */
//CC1310_LAUNCHXL_SPI0_MISO | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master in - slave out */
//CC1310_LAUNCHXL_SPI0_CLK | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI clock */
PIN_TERMINATE
};
基本上可以排除了和flash有关的可能性……会不会是库的问题?
问题解决了……确实是库的“问题”,但完全可以自行解决……
在CC1310_LAUNCHXL.h里面修改相关的管脚定义就行了:
/* Analog capable DIOs */
#define CC1310_LAUNCHXL_DIO23_ANALOG IOID_7
#define CC1310_LAUNCHXL_DIO24_ANALOG IOID_8
#define CC1310_LAUNCHXL_DIO25_ANALOG IOID_9
#define CC1310_LAUNCHXL_DIO26_ANALOG IOID_10
#define CC1310_LAUNCHXL_DIO27_ANALOG IOID_11
#define CC1310_LAUNCHXL_DIO28_ANALOG IOID_12
#define CC1310_LAUNCHXL_DIO29_ANALOG IOID_13
#define CC1310_LAUNCHXL_DIO30_ANALOG IOID_14
之所以会报错是因为API里面开启AD的时候还会初始化一次相关的管脚,并不是在一般的Board_initGeneral();里面直接一次过初始化所有要用到的管脚,思路不一样……
好了至此。秀智商了:(
