正式的A/D板终于做出来了,趁热赶紧进行测试。令人郁闷的是4片max146,两片行,两片不行。why?奋战了一天,晚上终于搞定。原因出在这两个函数身上:
static inline void AT91_CfgPIO_SPI_CS2(void) {
AT91_SYS->PIOA_PDR = AT91C_PA5_NPCS2;
}
static inline void AT91_CfgPIO_SPI_CS3(void) {
AT91_SYS->PIOA_PDR = AT91C_PA6_NPCS3;
}
:-)。它们并不能完成任务。
static inline void AT91_CfgPIO_SPI_CS0(void) {
AT91_SYS->PIOA_PDR = AT91C_PA3_NPCS0;
}
static inline void AT91_CfgPIO_SPI_CS1(void) {
AT91_SYS->PIOA_PDR = AT91C_PA4_NPCS1;
}
这两个却可以,所以两片可以,两片不行。
解决方法很简单,就是将I/O线分配给外设A了:
AT91_SYS->PIOA_ASR |= (1 << 5);
AT91_SYS->PIOA_ASR |= (1 << 6);
调试心得就是多从软件入手,借助printk语句,观察关键状态寄存器,硬件一般都没有问题,:-)。
阅读(2326) | 评论(2) | 转发(0) |