SAM9263底层驱动代码.docx
- 文档编号:18514813
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:27
- 大小:21.25KB
SAM9263底层驱动代码.docx
《SAM9263底层驱动代码.docx》由会员分享,可在线阅读,更多相关《SAM9263底层驱动代码.docx(27页珍藏版)》请在冰点文库上搜索。
SAM9263底层驱动代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include"sam9_smc.h"
#include"generic.h"
//#defineAT91SAM9263S
#undefAT91SAM9263S//AT91SAM9263K
staticvoid__initek_map_io(void)
{
/*Initializeprocessor:
18.432MHzcrystaldemoboardis16.367MHZ*/
at91sam9263_initialize(18432000);
/*DGBUonttyS0.(Rx&Txonly)*/
at91_register_uart(0,0,0);
/*USART0com1onttyS1.(Rx,Tx,RTS,CTS)*/
at91_register_uart(AT91SAM9263_ID_US0,1,ATMEL_UART_CTS|ATMEL_UART_RTS);
/*USART1com2onttyS2.(Rx,Tx)*/
at91_register_uart(AT91SAM9263_ID_US1,2,0);
/*USART2com3onttyS3.(Rx,Tx)*/
at91_register_uart(AT91SAM9263_ID_US2,3,0);
/*setserialconsoletottyS0(ie,DBGU)*/
at91_set_serial_console(0);
}
staticvoid__initek_init_irq(void)
{
at91sam9263_init_interrupts(NULL);
}
/*
*USBHostport
*/
staticstructat91_usbh_data__initdataek_usbh_data={
.ports=2,
//.vbus_pin={AT91_PIN_PA24,AT91_PIN_PA21},
};
/*
*USBDeviceport
*/
staticstructat91_udc_data__initdataek_udc_data={
.vbus_pin=AT91_PIN_PA25,
.pullup_pin=0,/*pull-updrivenbyUDC*/
};
/*
*ADS7846Touchscreen
*/
#ifdefined(CONFIG_TOUCHSCREEN_ADS7846)||defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
staticintads7843_pendown_state(void)
{
return!
at91_get_gpio_value(AT91_PIN_PA15);/*TouchscreenPENIRQ*/
}
staticstructads7846_platform_dataads_info={
.model=7843,
.x_min=150,
.x_max=3830,
.y_min=190,
.y_max=3830,
.vref_delay_usecs=100,
.x_plate_ohms=450,
.y_plate_ohms=250,
.pressure_max=15000,
.debounce_max=1,
.debounce_rep=0,
.debounce_tol=(~0),
.get_pendown_state=ads7843_pendown_state,
};
staticvoid__initek_add_device_ts(void)
{
at91_set_B_periph(AT91_PIN_PA15,1);/*ExternalIRQ1,withpullup*/
at91_set_gpio_input(AT91_PIN_PA31,1);/*TouchscreenBUSYsignal*/
}
#else
staticvoid__initek_add_device_ts(void){}
#endif
/*
*SPIdevices.
*/
staticstructspi_board_infoek_spi_devices[]={
#ifdefined(CONFIG_MTD_AT91_DATAFLASH_CARD)
{/*DataFlashcard*/
.modalias="mtd_dataflash",
.chip_select=0,
.max_speed_hz=15*1000*1000,
.bus_num=0,
},
#endif
#ifdefined(CONFIG_TOUCHSCREEN_ADS7846)||defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
{
.modalias="ads7846",
.chip_select=3,
.max_speed_hz=125000*16,/*maxsamplerate*clockspersample*/
.bus_num=0,
.platform_data=&ads_info,
.irq=AT91SAM9263_ID_IRQ1,
},
#endif
#ifdefined(AT91SAM9263S)
{/*spidev*/
.modalias="spidev",
.chip_select=0,
.max_speed_hz=10*1000*1000,
.bus_num=1,
.mode=SPI_MODE_1,
},
{/*spidev*/
.modalias="spidev",
.chip_select=1,
.max_speed_hz=10*1000*1000,
.bus_num=1,
.mode=SPI_MODE_1,
},
{/*spidev*/
.modalias="spidev",
.chip_select=2,
.max_speed_hz=10*1000*1000,
.bus_num=1,
.mode=SPI_MODE_1,
},
{/*spidev*/
.modalias="spidev",
.chip_select=3,
.max_speed_hz=10*1000*1000,
.bus_num=1,
.mode=SPI_MODE_1,
},
#endif//AT91SAM9263S
};
/*
*MCI(SD/MMC)
*/
staticstructat91_mmc_data__initdataek_mmc_data={
.wire4=1,
#ifdefined(AT91SAM9263S)
.det_pin=AT91_PIN_PE16,
.wp_pin=AT91_PIN_PE17,
#else
.det_pin=AT91_PIN_PE18,
.wp_pin=AT91_PIN_PE19,
#endif
//.vcc_pin=...notconnected
};
/*
*MACBEthernetdevice
*/
staticstructat91_eth_data__initdataek_macb_data={
.phy_irq_pin=AT91_PIN_PE31,
.is_rmii=1,
};
/*
*NANDflash
*/
staticstructmtd_partition__initdataek_nand_partition[]={
{
.name="Bootloader",
.offset=0,
.size=4*1024*1024,
},
{
.name="Kernel",
.offset=4*1024*1024,
.size=MTDPART_SIZ_FULL,
},
{
.name="Ramdisk",
.offset=8*1024*1024,
.size=24*1024*1024,
},
{
.name="jffs2",
.offset=32*1024*1024,
.size=MTDPART_SIZ_FULL,
},
};
staticstructmtd_partition*__initnand_partitions(intsize,int*num_partitions)
{
*num_partitions=ARRAY_SIZE(ek_nand_partition);
returnek_nand_partition;
}
staticstructatmel_nand_data__initdataek_nand_data={
.ale=21,
.cle=22,
//.det_pin=...notconnected
.rdy_pin=AT91_PIN_PA22,
.enable_pin=AT91_PIN_PD15,
.partition_info=nand_partitions,
#ifdefined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16)
.bus_width_16=1,
#else
.bus_width_16=0,
#endif
};
staticstructsam9_smc_config__initdataek_nand_smc_config={
.ncs_read_setup=0,
.nrd_setup=1,
.ncs_write_setup=0,
.nwe_setup=1,
.ncs_read_pulse=3,
.nrd_pulse=3,
.ncs_write_pulse=3,
.nwe_pulse=3,
.read_cycle=5,
.write_cycle=5,
.mode=AT91_SMC_READMODE|AT91_SMC_WRITEMODE|AT91_SMC_EXNWMODE_DISABLE,
.tdf_cycles=2,
};
staticvoid__initek_add_device_nand(void)
{
/*setupbus-width(8or16)*/
if(ek_nand_data.bus_width_16)
ek_nand_smc_config.mode|=AT91_SMC_DBW_16;
else
ek_nand_smc_config.mode|=AT91_SMC_DBW_8;
/*configurechip-select3(NAND)*/
sam9_smc_configure(3,&ek_nand_smc_config);
at91_add_device_nand(&ek_nand_data);
}
/*
*I2Cdevices
*/
staticstructat24_platform_dataat24c512={
.byte_len=SZ_512K/8,
.page_size=128,
.flags=AT24_FLAG_ADDR16,
};
staticstructi2c_board_info__initdataek_i2c_devices[]={
{
I2C_BOARD_INFO("24c512",0x50),
.platform_data=&at24c512,
},
/*moredevicescanbeaddedusingexpansionconnectors*/
};
/*
*LCDController
*/
#ifdefined(CONFIG_FB_ATMEL)||defined(CONFIG_FB_ATMEL_MODULE)
#ifdefined(CONFIG_FB_AT91_LCD480X272)
staticstructfb_videomodeat91_tft_vga_modes[]={
{
.name="LCD480X272@60",
.refresh=60,
.xres=480,.yres=272,
.pixclock=KHZ2PICOS(9000),
.left_margin=10,.right_margin=10,
.upper_margin=6,.lower_margin=30,
.hsync_len=96,.vsync_len=2,
.sync=FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
.vmode=FB_VMODE_NONINTERLACED,
},
};
#elifdefined(CONFIG_FB_AT91_LCD640X480)
staticstructfb_videomodeat91_tft_vga_modes[]={
{
.name="LCD640X480@60",
.refresh=60,
.xres=640,.yres=480,
.pixclock=KHZ2PICOS(25000),
.left_margin=30,.right_margin=16,
.upper_margin=32,.lower_margin=10,
.hsync_len=96,.vsync_len=2,
.sync=FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
.vmode=FB_VMODE_NONINTERLACED,
},
};
#elifdefined(CONFIG_FB_AT91_LCD800X480)
staticstructfb_videomodeat91_tft_vga_modes[]={
{
.name="LCD800X480@60",
.refresh=60,
.xres=800,.yres=480,
.pixclock=KHZ2PICOS(33000),
.left_margin=48,.right_margin=40,
.upper_margin=3,.lower_margin=29,
.hsync_len=128,.vsync_len=3,
.sync=FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
.vmode=FB_VMODE_NONINTERLACED,
},
};
#elifdefined(CONFIG_FB_AT91_LCD800X600)
staticstructfb_videomodeat91_tft_vga_modes[]={
{
.name="LCD800X600@60",
.refresh=60,
.xres=800,.yres=600,
.pixclock=KHZ2PICOS(40000),
.left_margin=182,.right_margin=30,
.upper_margin=25,.lower_margin=1,
.hsync_len=64,.vsync_len=4,
.sync=FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
.vmode=FB_VMODE_NONINTERLACED,
},
};
#elifdefined(CONFIG_FB_AT91_LCD1024X768)
staticstructfb_videomodeat91_tft_vga_modes[]={
{
.name="LCD1024X768@60",
.refresh=60,
.xres=1024,.yres=768,
.pixclock=KHZ2PICOS(48000),
.left_margin=80,.right_margin=24,
.upper_margin=29,.lower_margin=3,
.hsync_len=32,.vsync_len=6,
.sync=FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
.vmode=FB_VMODE_NONINTERLACED,
},
};
#elifdefined(CONFIG_FB_AT91_LCD240X320)
staticstructfb_videomodeat91_tft_vga_modes[]={
{
.name="LCD240X320@60",
.refresh=60,
.xres=240,.yres=320,
.pixclock=KHZ2PICOS(4965),
.left_margin=1,.right_margin=33,
.upper_margin=1,.lower_margin=0,
.hsync_len=5,.vsync_len=1,
.sync=FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
.vmode=FB_VMODE_NONINTERLACED,
},
};
#endif
staticstructfb_monspecsat91fb_default_monspecs={
.manufacturer="QIY",
.monitor="TFT",
.modedb=at91_tft_vga_modes,
.modedb_len=ARRAY_SIZE(at91_tft_vga_modes),
.hfmin=15000,
.hfmax=64000,
.vfmin=50,
.vfmax=150,
};
#defineAT91SAM9263_DEFAULT_LCDCON2(ATMEL_LCDC_MEMOR_LITTLE\
|ATMEL_LCDC_DISTYPE_TFT\
|ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
staticvoidat91_lcdc_power_control(inton)
{
at91_set_gpio_value(AT91_PIN_PA30,on);
}
/*Driverdatas*/
staticstructatmel_lcdfb_info__initdataek_lcdc_data={
.lcdcon_is_backlight=true,
.default_bpp=16,
.default_dmacon=ATMEL_LCDC_DMAEN,
.default_lcdcon2=AT91SAM9263_DEFAULT_LCDCON2,
.default_monspecs=&at91fb_default_monspecs,
.atmel_lcdfb_power_control=at91_lcdc_power_control,
.guard_time=1,
#ifdefined(AT91SAM9263S)
.lcd_wiring_mode=ATMEL_LCDC_WIRING_RGB,//yxx
#endif
};
#else
staticstructatmel_lcdfb_info__initdataek_lcdc_data;
#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAM9263 底层 驱动 代码