请教SPI控制
时间:10-02
整理:3721RD
点击:
前一段我问过关于SPI控制的问题,也得到了答复,但仍旧有些不明白的地方,希望大家帮忙。
我本以为SPI的SPISTE口至自动控制的,但如果是要软件控制的,那么GPIOF口低四位设置成了SPI模式,就不能用GPIO口的寄存器对其输出值进行更改了,那如果想软件控制SPISTE端口要怎么做?SPI的寄存器里也没有对他控制的位阿
我本以为SPI的SPISTE口至自动控制的,但如果是要软件控制的,那么GPIOF口低四位设置成了SPI模式,就不能用GPIO口的寄存器对其输出值进行更改了,那如果想软件控制SPISTE端口要怎么做?SPI的寄存器里也没有对他控制的位阿
SPISTE口软件控制用作SPI时要初始化为普通IO口。
不好意思,多问一句,软件控制SPISTE口时,要求在传送出16bit的数据后立即置位SPISTE,可SPIDAT这个寄存器是自动发送的,2812里也没有相应的寄存器标志位能反映它传送完成,用Delay函数也不能准确,那我要如何做才能准确置位SPISTE?我没有用SPISOMI口,所以也不能以此来判断。我外接的芯片是AD421。
谢谢指教。
我用的是2406.
AD421我没用过.
我写过EEPROM(24lc040),SPISTE口用来选中芯片或不选中.
AD421是什么片子?
你用SPISTE口完成什么功能?
AD421是个专门用来输出工业420mA标准电流的芯片,16位同步串行输入,三个信号输入端,它工作过程就是先传入一个16位数据(0000FFFF对应420mA),之后要给一个锁存信号(上升沿)来使能AD421以实现数字信号到电流的转换,而且两个锁存信号之间只能有16个数据周期,否则就不能正常转换,我用SPISTE口用来提供这个锁存信号,所以置位SPISTE口不能晚,也不能早,不知道怎么解决这个问题。
我看了一下2812的书。
SPISTS寄存器有个TXBUF FULL FLAG位。
发送缓冲器满置1,空时为0。
你可以判断这个位啊。
不好意思,前端对AD421的要求有点理解错误,它要求的是两个latch信号中间的数据必须是16bit,也就是16个时钟周期,只要传进来的数据位数对就行了,这样的话就很好控制了,我一直认为要计算时钟周期,所以觉得没法准确控制,呵呵,不过现在板子还是调不通,很郁闷,但应该不会是软件的问题了。