
看串口和SPI通讯例程中,SPI部分的初始化为: /* Initialize SPI in Slave mode */ SPI_Init(SPI_FIRSTBIT_LSB, SPI_BAUDRATEPRESCALER_2, SPI_MODE_SLAVE, SPI_CLOCKPOLARITY_LOW, SPI_CLOCKPHASE_1EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT,(uint8_t)0x07); 我的IC是3线的,最先发送的是指令还是数据选择位,后面的一字节是高位在前,其它的我就都不明白了 求高人指点。 |
程序卡死在vPortFree函数中
STM8AF6213 LIN通讯问题
STM32H7B0 CAN发送异常
STM32H750如何搭配88E6320來使用?
硬件的spi单线传输怎么读写寄存器。
STM8AF6266 LIN通讯实例
STM32L4R9最大支持SD卡的容量是?支持SDXC 64G卡吗?
有使用过芯讯通的A7680C这个4G模块吗?
ST60系列可以使用OFDM调制进行发射接收吗?
STM32F103的LIN Break问题
/* Initialize SPI in Slave mode */
SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_4, SPI_MODE_SLAVE, SPI_CLOCKPOLARITY_LOW,
SPI_CLOCKPHASE_1EDGE, SPI_DATADIRECTION_1LINE_TX, SPI_NSS_SOFT,(uint8_t)0x07);
SPI_SendData();就可以发送一字节的数据了,可是那位应该最先发送的指令/数据选择位应该怎么发送下去呢?
即使不看手册。库函数对各个参数都有详细注释。
SPI通信模式、数据高位先发还是低位先发、极性、主从模式、时钟、片选模式。。。。
哥,我不是不看
是找不到呀
请教:在哪儿有关于这种3线9bit模式下,这个指令和数据选择位的说明或设置?我看库函数好像都是4线,8bit模式。
至于数据位,不知你是哪里看出是9位了。
STM8S系列有个参考手册,RM0016,这个网站的资料下载区就可以找到。
哥哥,不是我在哪里看出了9位,我的被控制的器件要求的就是9位呀!
要求在总线启动后,第一位传送过去的是选择指令还是数据的,然后的8位才是从高到低的要传送数据。
最先传的这一位是用来区分将要传给IC的是寄存器还是给寄存器的参数的。
这种3线9位的SPI口相信大家搞程序的都用IO模拟过的。
我纠结的正是在库函数中看不到如何设置这最先传送的关键一位的。
你的被控器件是个什么东西?
如果你的器件必须这样,除了用软件模拟外;
再就是是否可以考虑把这个特殊位设计一个特殊字节用来识别命令还是数据。
感谢哥哥的回复,我现在也决定用IO口模拟了。
可是说实话,我对STM8S才刚刚接触,依照例程写的IO口输出方波程序都没有输出。
求您老给看下问题出在哪里:
#include "stm8s.h"
void Delay(u32 nCount)
{
while (nCount != 0) nCount--;
}
int main(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
GPIO_Init(GPIOB,GPIO_PIN_5,GPIO_MODE_OUT_PP_HIGH_SLOW );
while(1)
{
GPIO_WriteReverse(GPIOB, GPIO_PIN_5);
Delay(10);
}
}
你的PB5配置有问题,不能这样配。要配置为OD,而且外边还得加上拉。它是个真开漏脚,细节看手册。
多谢指教!