我有一个SAM4s Xplained,想要使用UART1,但无法找到示例或帮助.我尝试了自己,但它不起作用.
到目前为止,这是我的代码:
conf_uart.h
#include "asf.h" //uart.h etc. included here
#include <sam4s_xplained.h>
#define UART_SERIAL_BAUDRATE 9600
#define UART_SERIAL_CHANNEL_MODE UART_MR_CHMODE_AUTOMATIC //UART_MR_CHMODE_NORMAL
#define UART_SERIAL_MCK 240000000UL //CHIP_FREQ_CPU_MAX (tired both!)
#define UART_SERIAL_MODE UART_MR_PAR_NO
void uart_custom_init(void);
Run Code Online (Sandbox Code Playgroud)
conf_uart.c
#include "conf_uart.h"
uint8_t received_byte;
void uart_custom_init(void) {
sysclk_init();
const sam_uart_opt_t uart_console_settings = {
UART_SERIAL_BAUDRATE,
UART_SERIAL_CHANNEL_MODE,
UART_SERIAL_MCK,
UART_SERIAL_MODE
};
uart_init(UART1,&uart_console_settings); //Init UART1
uart_enable_rx(UART1); //Enable RX (receiving)
uart_enable_tx(UART1); //Enable TX (transmitting)
uart_enable(UART1); //Enable UART1
uart_enable_interrupt(UART1,UART_IER_RXRDY); //Interrupt reading ready
NVIC_EnableIRQ(UART1_IRQn);
}
void UART1_Handler() {
uint32_t dw_status = uart_get_status(UART1);
if(dw_status & UART_SR_RXRDY) { …Run Code Online (Sandbox Code Playgroud) 问题
0x2A, 0x42, 0x78, 0x250x25出现上一次传输的字节[周五晚间调试结果]
我们写了另一个echo例程; 它只是读取它得到的东西并将其写回.
我们在发布模式下构建它(在另一个的建议下)
我写了一个例程,发送了25次相同的号码,看看我得到了什么.
之后,我将值加入并发送25次,然后循环.
结果将附加在此消息的末尾.
我没有得到第一个空字节.基于各种因素,我现在不会担心这一点.
接下来的五轮比赛,我完全恢复了一切
我将尝试包含所有相关的源代码,希望它不是一个文本墙.如果需要更多代码来理解这一点,请询问.
这是有问题的UART的初始化代码.我可以包括
//*****************************************************************//
void initUART1(void) // UART1 for MCU1/2 communication
{
U1MODE=0; //// Mode Register, Manual DS61168D page 180
U1MODEbits.FRZ=0;
U1MODEbits.SIDL=0;
U1MODEbits.IREN=0;
U1MODEbits.RTSMD=0;
U1MODEbits.UEN=0b00; //// Just TX/RX, No CTS/RTS
U1MODEbits.WAKE=1;
U1MODEbits.LPBACK=0;
U1MODEbits.ABAUD=0;
U1MODEbits.RXINV=0;
U1MODEbits.BRGH=1;
U1MODEbits.PDSEL=0b00;
U1MODEbits.STSEL=0;
U1STA=0;
U1STAbits.ADM_EN=0;
U1STAbits.UTXINV=0;
U1STAbits.URXEN=1;
U1STAbits.UTXBRK=0;
U1STAbits.UTXEN=1;
U1STAbits.ADDEN=0;
U1STAbits.OERR=0;
//// Status register, Manual DS61168D page 183
//U1BRG=21; //// …Run Code Online (Sandbox Code Playgroud) 我有一个关于UART控制器的问题.
UART控制器是通用名吗?
我的意思是,如果我们使用RS-232协议,我们应该命名这个UART控制器,RS-232控制器,如果我们使用RS-485作为协议,我们应该称之为UART控制器,RS-485控制器等等?
我注意到我们通常说网络控制器(协议:以太网,令牌环,ATM,......),如果实现的协议是以太网,我们说以太网控制器.UART控制器和网络控制器之间的正确比较是否都是通用名称?
非常感谢您的澄清
我有一个简单的PC到板连接使用串口(9600,没有奇偶校验,8位,没有hw流)我在PC上打开简单的终端*与teraterm)并在teraterm和board中输入密钥,我只是做
cat /dev/ttyO5
Run Code Online (Sandbox Code Playgroud)
我在范围内看到了按下的字符,但是只有在teraterm中按"enter"后才能看到控制台中的字符(好像它们存储在Linux驱动程序中的某些FIFO中,只能输入触发器)
谢谢你的建议,冉
我正在研究内核代码中的UART驱动程序,想知道,谁首先进入图片,device_register()或者driver_register()打电话?
为了区别他们,请遵循此.
在UART探测中,我们打电话
uart_register_driver(struct uart_driver *drv)
Run Code Online (Sandbox Code Playgroud)
成功注册后,
uart_add_one_port(struct uart_driver *drv, struct uart_port *uport)
Run Code Online (Sandbox Code Playgroud)
请详细解释一下.
我一直在尝试使用来自Linux ( Ubuntu ) 机器的USB到TTL电缆连接到带有Android Things的Raspberry Pi 3的串行控制台。尽管我按照文档连接了电缆,但在执行命令时我得到的只是以下内容minicom
有没有机会在任何字符输入。所以我既看不到任何内核消息,也看不到设备的外壳。
我错过了什么?
我正在通过python中的uart处理文件的传输文件夹.下面你看到简单的函数,但是有一个问题,因为我得到错误,如标题:IOError:[Errno 2]没有这样的文件或目录:'1.jpg'其中1.jpg是测试文件夹中的文件之一.所以这很奇怪,因为程序知道它不存在的文件名?我做错了什么?
def send2():
path = '/home/pi/Downloads/test/'
arr = os.listdir(path)
for x in arr:
with open(x, 'rb') as fh:
while True:
# send in 1024byte parts
chunk = fh.read(1024)
if not chunk: break
ser.write(chunk)
Run Code Online (Sandbox Code Playgroud) 我正在写一个UART驱动程序。我在第 14.Linux 设备模型一章中遇到了这两个函数。
int device_register(struct device *dev);
int driver_register(struct device_driver *drv);
Run Code Online (Sandbox Code Playgroud)
由于 UART 是一个字符驱动程序,我使用 ( 动态创建了主alloc_chrdev_region)设备号,并使用cdevadd().
我在 omap-serial.c 中遇到了uart_register_driver()和。platform_driver_register()
我可以映射driver_register与 ,platform_driver_register()但uart_register_driver映射与 tty 相关的函数。因为我是初学者,所以我不想使用 tty 相关的函数。
uart_register_driver与?有关device_driver()。
请解释。
我无法启用UART.关于如何从更新uEnv.txt文件到更新内核启用和解决问题,我已经经历了许多不同的方向.我得出的结论是,使用与指令不同的内核可能是一个问题,但我不确定?我不太了解Beaglebone,我还在学习.每当我尝试使用Python测试UART并输入以下内容时:
导入Adafruit_BBIO.UART作为UART
UART.setup( "UART1")
我收到错误:文件"stdin",第1行,在模块中
RuntimeError:无法导出UART通道.
我也开始担心我根本没有capemgr.当我运行命令时:
ls sys/devices
我没有列出capemgr.
我正在使用最新的Debian Image:Jessie Debian 8.3(2016-01-24)
我正在运行的内核版本是4.1.17-ti-rt-r46.
我的DTC版本是1.4.1-g1e75ebc9
我真的很感激任何帮助.我几天来一直在努力解决这个问题.谢谢!
我在我的C++程序中有六进制值的unsigned char数组:
unsigned char buff[] = {0x03, 0x35, 0x6B};
Run Code Online (Sandbox Code Playgroud)
我想计算这个数组的大小,以便我可以使用这个函数在UART端口linux上发送它:
if ((count = write(file,buff,length))<0)
{
perror("FAIL to write on exit\n");
}
Run Code Online (Sandbox Code Playgroud)
因为我可以看到长度是int数,buff是一个可以在程序执行期间改变大小的数组.任何人都可以帮助我如何写它.谢谢
uart ×10
serial-port ×4
linux ×2
arm ×1
beagleboard ×1
c ×1
c++ ×1
console ×1
debian ×1
embedded ×1
errno ×1
kernel ×1
linux-kernel ×1
pic ×1
python ×1