想请教下,TMS570的引脚使用问题,我使用别的芯片的时候,CAN引脚呀,串口TX RX引脚呀,都是和IO口可以复用的,不用这些功能的时候,是可以做普通IO口使用的,了解TMS570一段时间了,不知道这款芯片是不是这样的,我发现IO口只有GPIOA和GPIOB。
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.
dongyuan,
答案是我们的芯片不止GIOA和GIOB两个只能做GPIO的模块。就拿你举的CAN模块来说,我们的CAN模块的发送和接收两个管脚就可以作为GPIO来使用,当然前提是你不把他们设置成CAN模块的工作模式。引脚的功能是软件可配的。
谢谢
谢谢您的耐心解答,我到现在就是在这里迷惑,因为新接触这款芯片,比如我项目当中不可能所有模块都是用到,比如CAN,我可能就不用,我想把CAN的引脚IO来模拟1WIRE总线或者是SPI总线,您这个2.3.2.5表,我使用CAN1RX来模拟1wire总线,我都不怎么设置IO口的置高、置低,虽然在HALCOGEN里可以配置为IO口模式,但是不知道他的数据寄存器命是啥,请问在哪里可以知道。gioSetPort(hetPORT1, gioGetPort(hetPORT1) ^ 0x00000001);比如这句是设置HET1的PIN1为高电平,那么我如何设置CAN1RX引脚,也就是B10为高电平呢!
dongyuan,
对于怎么将CANRX和TX两个管脚用作GPIO,首先你需要在HALCOGEN里面设置他们工作在GPIO模式下面,然后在我们的CAN.c文件里面有关于操作这两个端口的函数。他们分别是canIoSetDirection()和canIoSetPort(),用来设置这两个端口工作在GPIO模式下的输入或输出方向,以及相应的端口值设置。
你可以尝试使用这两个函数,来简单测试一下。
谢谢
您好,实在是辛苦您了,我还是没搞懂TMS570的GPIO的使用,也按照您提供的信息canIoSetDirection()和canIoSetPort()查询了,CAN这个引脚可以这么设置,那SPI引脚呢,4个引脚要怎么使用它的GPIO功能呢,不明白TMS570的CAN SPI I2C UART等都是默认功能吗?要使用GPIO功能必须单独模块内函数使用吗,比如canIoSetDirection()和canIoSetPort()。和其他的ARM很不一样,STM LPC的都是PA PB PC等GPIO口,像CAN I2C SPI都是功能复用口,如果我不用这些功能复用口的话,直接操作GPIO寄存器就可以操作32个IO等,比如GPIOA【0..31】。TMS570要操作31个IO,那不是要用很多很多函数,CAN才2个IO,SPI才4个IO,是不是我的想法有问题,根本就不这么使用,请指点指点!
Dongyuan,
这里有可能是我没有讲清楚,针对于我们芯片具有的类似于CAN SPI,I2C等具有功能复用的模块,他们可以通过设置相应的函数,让他工作在GPIO模式下面。但是这并不是说他们只能通过设置本身具有的函数来让他们工作在GPIO模式下。我们可以通过GPIO模块的相应函数:
void gioSetDirection(gioPort_t *port, uint32_dir) // Set the direction of GIO pins at run time
void gioSetBit(gioPort_t *port, uint32_t bit, uint32_t value) // Writes a value to the specified pin of given GIO port
来设置所有的具有GPIO功能复用的模块。
举个例子来说,如果你要设置MIBSPI工作在GPIO模式下,你可以这样设置:
gioSetDirection(mibspiPORT1,0x01); // This will set the MIBSPI1_CS(0) as output
gioSetBit(mibspiPORT1,0x01,1);// set the CS output 1.
其他的模块也是类似的操作。
不知道这样解释你能不能接受,如果还有问题的话,我们可以继续商量讨论。
谢谢