The result of the CRC calculation depends on the polynomia you use. You should check that with your former algorithm.
To save some resources, you may ^combine your control-registersw into a single one and write the corresponding bit patterns to it.
The polynomia is checked, that is the same in both cases which I compared. It seems to be a problem tht I wanted to write byte wise but I have to put every single bit in it.
That I just tried out but I got different values. I use the polynomia 0x8005 and I put always a 1 in it. My software calculation gives a 0x0202 after 1 byte input as result. When I try the same with the hardware module the result is:
After bit 1: 0x000B; after bit 2: 0x001D; 0x0031; 0x0069; 0x00D9; 0x019; 0x0379 and after bit 8 0x06F9 but not 0x0202 what I expected.