|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ z! |0 o* Z* Y) _void PSCInit(void): k& _- g: Y7 e+ e: S
{
% i; {( Y/ O G9 I" _ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
2 o, | N/ f |% ]% q}$ D0 m" [+ g1 A5 A: p; E( b7 T y
- [ |8 ?; l' T0 R7 zvoid GPIOBankPinMuxSet(void)% T. N; w8 J& A# X7 @, \" Z
{8 u% D4 y8 A7 [' r' r
// DRDY ------------ GPIO6[14] -- 111
* X5 W9 t1 v# F // SPI1_CLK ------------ GPIO2[13] -- 46
5 U" V9 g: d& g7 P+ N1 B0 E // SPI1_SOMI------------ GPIO2[11] -- 44
4 O! Q S) j: ~9 d9 N$ c // SPI1_SIMO------------ GPIO2[10] -- 43
$ X4 W% T! N2 {, F( W- k // SPI1_CS2 ------------ GPIO1[0] -- 17
- [" n) e/ W' h/ q0 H& o // SPI1_CS3 ------------ GPIO1[1] -- 18+ C2 [; Q/ ^/ p2 N! u8 v! e1 I- L
! {( F/ L1 z9 _. C" k* p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);# k& c2 R' _( V- x% x6 h0 s* g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 S/ Q; S S& L HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
* l( K1 S: Y( N' T$ a" ?. u/ p1 D: K7 d$ L3 q
//DRDY
0 i# ]. K; F, g | GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY4 t; V* S; {% G
// CS2,CS3
: u( M* [6 M: D8 \% [# ^ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2, ^( v B# [, u6 J; `
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS35 }; H4 Q* \$ ~
//SIMO+ u* m- V. ~$ T' w r E
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( Q% \1 S4 E' R6 ^ \/ H8 z0 ] //SOMI: {% M" x' S' C0 {8 }! L
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 A2 ^2 T" w! _: B //CLK$ _$ U" }; q6 {9 {1 h
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK8 {3 t; c8 d1 j8 E I. W3 g
7 u% j# D$ m& D9 N# o" `! A
// LDAC
" `2 D0 o7 Y* ^$ x GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 \! D4 A4 D6 N2 }5 P/ i
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& @3 h" ]3 s; Q4 t3 i3 b
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 U$ z8 u0 s1 s) A3 I' x& ~ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
8 K* B, z& p3 s* v% ~: @( ? GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY, o. ]% x# j% m/ |" N" a
}
8 X U: q& _3 T' S: z# h# T0 ^1 D# O1 \3 U, `
int main(void)" Y% ^$ O7 \' r5 e/ \
{+ W. p7 F/ ?2 P, f; f: L# T
// 外设使能
6 _4 k) F5 U1 y0 \ PSCInit();# x: p, V* e( j8 D1 ?' q4 b- Z
' ~( b% p4 U% k- z" {* ] I0 c
2 R% R$ p7 t- n: N! u; t5 }
// 管脚复用配置1 w0 w4 L# m/ ?" P7 M7 z. h
GPIOBankPinMuxSet();" U1 `3 `& M( \" G/ J, U% S4 c: s+ U
for(;;)6 E) |* G$ M- R. B0 N8 ~1 L* P6 F
{
/ T5 P. q/ M5 b/ X. N: G/ Q3 { SET_SCLK();//时钟正常输出
* D$ ^5 a' X. }/ }2 X1 Q7 s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- l- u' L, S0 b# h" F. f+ P' K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 B8 G- Y) `- i GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
8 [0 T- H8 I$ k% L# o, _- w- |$ }2 v
delay(20);$ q8 y7 h/ k/ v9 n
CLR_SCLK();
2 C9 J2 j- |1 g, C+ h3 p+ w/ t GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3! A1 A) w$ R6 l0 \
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ M! F6 @) H9 L: g w, x; n" w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# O( d8 X c8 X" d9 @& V delay(20);# Q1 s% P9 G' u8 S$ t
}% `8 M; l8 t ]3 S0 J
}" `+ Z! Q, d, ^' z9 }* j x7 B3 S
|
|